Skip to main content

A bunch of helpers for successfully running Pyramid on Heroku.

Project description

Introduction

pyramid_heroku is a collection of tweens and helpers to successfully run Pyramid on Heroku

It provides the following:

  • ClientAddr tween that sets real user’s IP to request.client_addr

  • HerokuappAccess tween that denies access to your app’s <app>.herokuapp.com domain for any non-whitelisted IPs.

  • migrate.py script for automatically running alembic migrations on deploy.

Installation

Just do

pip install pyramid_heroku

or

easy_install pyramid_heroku

Compatibility

pyramid_heroku runs with pyramid>=1.7 and python>=3.6. Other versions might also work.

Documentation

Usage example for tweens:

def main(global_config, **settings):$ cat .heroku/release.sh
    config = Configurator(settings=settings)
    config.include('pyramid_heroku.client_addr')
    config.include('pyramid_heroku.herokuapp_access')
    return config.make_wsgi_app()

The pyramid_heroku.herokuapp_access tween depends on pyramid_heroku.client_addr tween and it requires you to list whitelisted IPs in the pyramid_heroku.herokuapp_whitelist setting.

Usage example for automatic alembic migration script:

$ cat .heroku/release.sh
#!/usr/bin/env bash

set -e

echo "Running migrations"
python -m pyramid_heroku.migrate my_app etc/production.ini

echo "DONE!"

For migration script to work, you need to set the MIGRATE_API_SECRET_HEROKU env var in Heroku. This allows the migration script to use the Heroku API.

See tests for more examples.

If you use structlog, add the following configuration setting to your INI file to enable structlog-like logging:

pyramid_heroku.structlog = true

Releasing

  1. Update CHANGES.rst.

  2. Update setup.py version.

  3. Run pipenv run python setup.py check -rs.

  4. Run pipenv run python setup.py sdist upload.

We’re hiring!

At Niteo we regularly contribute back to the Open Source community. If you do too, we’d like to invite you to join our team!

Changes

0.6.0

0.5.0

  • Prefer empty string than None. {‘VAL’: ‘${VAR}’} will expand into {‘VAL’: ‘’} instead of {‘VAL’: None} if the value of VAR is not exported or is an empty string. [sayanarijit]

  • To enforce that $VAR must be set, ${VAR:?custom error message} syntax can be used. [sayanarijit]

0.4.0

  • Supports bash style environment variable expansion. e.g. to declare default value, use ${DATABASE_URL:-sqlite:///database.db} [sayanarijit]

0.3.2

  • Shell now prints stderr/stdout even on non-zero exit code. [iElectric]

0.3.1

  • Fix auth bug in migrate.py. [zupo]

0.3

  • Drop support for zc.buildout environments. [zupo]

0.2

  • Expand all environment variables in the settings dictionary. This allows you to have, for example ${DATABASE_URL} to get db connection string from environment into your production.ini file. [zupo]

  • Use pipenv for setting up development. [zupo]

  • Add basic type hinting. [zupo]

  • Drop support for Python versions older than 3.7. [zupo]

0.1.5

  • Brown bag release. [karantan]

0.1.4

  • Fix return value in migrate.shell. subprocess.check_output changed in python 3.6 and is now returning byte and not str. [karantan]

0.1.3

0.1.2

  • The request.client_addr cannot be set directly, so we need to go around. [zupo]

0.1.1

  • Fix tween paths. [zupo]

0.1

  • Initial release. [dz0ny, zupo]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyramid_heroku-0.6.0.tar.gz (7.9 kB view details)

Uploaded Source

File details

Details for the file pyramid_heroku-0.6.0.tar.gz.

File metadata

  • Download URL: pyramid_heroku-0.6.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for pyramid_heroku-0.6.0.tar.gz
Algorithm Hash digest
SHA256 d5eaaa19ed286f7b54499cea0349403ff7a5d50398fa8699482b2dcd77e75311
MD5 6deec99a89157dea4ea7911ce72a8913
BLAKE2b-256 a1f579c5c8d6c4adb47dd2ff07a54295c43c72b3190abe87e93d4fb2534743ae

See more details on using hashes here.

Supported by

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