为在Heroku上成功运行Pyramid提供一系列助手。
项目描述
简介
pyramid_heroku 是一组用于在 Pyramid 上成功运行 Heroku 的中间件和助手
它提供以下功能
ClientAddr 中间件,将真实用户的 IP 设置为 request.client_addr
Host 中间件,将 request.host 设置为代理的 X-Forwarded-Host 标题(注意:潜在的安全风险)
HerokuappAccess 中间件,拒绝任何非白名单 IP 访问您的应用的 <app>.herokuapp.com 域名。
migrate.py 脚本,用于在部署时自动运行 alembic 迁移。
maintenance.py 脚本,用于控制 Heroku 维护模式。
安装
只需
pip install pyramid_heroku
或者
easy_install pyramid_heroku
兼容性
pyramid_heroku 与 pyramid>=1.7 和 python>=3.6 一起运行。其他版本也可能工作。
文档
中间件的用法示例
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()
pyramid_heroku.herokuapp_access 中间件依赖于 pyramid_heroku.client_addr 中间件,并且它要求您在 pyramid_heroku.herokuapp_whitelist 设置中列出白名单 IP。
pyramid_heroku.client_addr 中间件将请求的 client_addr 设置为我们可以信任的 IP。它通过 X-Forwarded-For 标题处理 IP 欺骗,并在使用 Cloudflare 反向代理时忽略 Cloudflare 的 IP。
自动 alembic 迁移脚本的用法示例
$ 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!"
要使迁移脚本正常工作,您需要在 Heroku 中设置 MIGRATE_API_SECRET_HEROKU 环境变量。这允许迁移脚本使用 Heroku API。
在运行数据库迁移之前,如果应用尚未处于维护模式,脚本将启用 Heroku 维护模式。迁移后,只有当它由迁移脚本启用时,才会禁用维护模式。
也可以使用 pyramid_heroku.maintenance 脚本启用/禁用维护模式。
启用 Heroku 维护模式的用法示例
python -m pyramid_heroku.maintenance on my_app etc/production.ini
如果您使用 structlog,请将以下配置设置添加到您的 INI 文件中,以启用 structlog 类型的记录
pyramid_heroku.structlog = true
请参阅测试以获取更多示例。
发布
更新 CHANGES.rst。
更新 pyproject.toml 版本。
运行 poetry check。
运行 poetry publish --build。
我们在招聘!
在 Niteo,我们定期为开源社区做出贡献。如果您也是,我们邀请您加入我们的团队!
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。