Skip to main content

devpi-postgresql: a PostgreSQL storage backend for devpi-server

Project description

devpi-postgresql: a PostgreSQL storage backend for devpi-server

This plugin adds a PostgreSQL storage backend for devpi-server.

Installation

devpi-postgresql needs to be installed alongside devpi-server.

You can install it with:

pip install devpi-postgresql

Requirements

At least PostgreSQL 9.5 is required for ON CONFLICT support.

Usage

When using the PostgreSQL storage, devpi-server expects an empty database. You have to create one like this: createdb devpi Depending on your PostgreSQL setup you have to create a user and grant it permissions on the new database like this:

CREATE ROLE devpi WITH LOGIN;
GRANT CREATE, CONNECT ON DATABASE devpi TO devpi;

Upon first initialization of devpi-server use --storage pg8000 to select the PostgreSQL backend.

By default it’ll use the devpi database on localhost port 5432. To change that, use storage pg8000:host=example.com,port=5433,database=devpi_prod. The possible settings are: database, host, port, unix_sock, user, password, ssl_check_hostname, ssl_ca_certs, ssl_certfile and ssl_keyfile.

If any of the “ssl” settings is specified, a secure Postgres connection will be made. Typically, the name of a file containing a certificate authority certificate will need to be specified via ssl_ca_certs. By default, the server’s hostname will be checked against the certificate it presents. Optionally disable this behavior with the ssl_check_hostname setting. Use ssl_certfile and ssl_keyfile to enable certificate-based client authentication.

All user/index files and metadata of devpi-server are stored in the database. A few things and settings are still stored as files in the directory specified by --serverdir.

Plugins like devpi-web don’t or can’t use the storage backend. They still handle their own storage.

Support

If you find a bug, use the issue tracker at Github.

For general questions use GitHub Discussions or the devpi-dev@python.org mailing list.

For support contracts and paid help contact mail at pyfidelity.com.

Changelog

3.0.1 (2022-04-25)

Bug Fixes

  • Fix #884: Error during startup of devpi-server.

3.0.0 (2022-03-18)

Deprecations and Removals

  • Require at least devpi-server 6.2.0.

Features

  • Support performance and memory optimizations enabled by devpi-server >= 6.2.0.

  • Support new storage interface from devpi-server 6.5.0 to keep files out of memory.

  • Files are stored in a temporary location and committed to the database in one shorter transaction block. This also reduces the time locks are held on the database.

  • Support memory optimizations enabled by devpi-server 6.5.0 to keep cache small.

  • Switch to native interface introduced in pg8000 1.17.0.

  • Stream files directly through database connection using COPY.

Bug Fixes

  • Reduce chances of conflicts by using a postgresql sequence for serials. This can cause serials with no changes due to gaps in the sequence in case of conflicts, but these are harmless.

2.0.0 (2020-04-14)

Deprecations and Removals

  • Python 3.4 isn’t supported anymore, Python 3.5 support will be dropped at its EOL in September 2020.

Features

  • Upgrade pg8000 to version 1.14.0 or newer and take advantage of its improved SSL interface.

1.1.0 (2020-01-31)

Features

  • fix #738: add ssl_cert_reqs, ssl_ca_certs, ssl_certfile and ssl_keyfile settings to the –storage=pg8000 option. Each setting corresponds to the similarly-named key (remove the initial ssl_) in the ssl parameter passed to pg8000.connect(). ssl_cert_reqs should be either “cert_optional” or “cert_required” and the other three settings are file names.

1.0.0 (2019-04-26)

Deprecations and Removals

  • Requires at least PostgreSQL 9.5 for ON CONFLICT support.

  • Dropped support for Python 2.x and PyPy2.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page