跳转到主要内容

一个用于与HireFire服务集成的Python库 -- Heroku进程管理器

项目描述

这是一个用于HireFireHeroku进程管理器的Python包。

HireFire能够在必要时自动调整你的Web和worker dynos的大小。当新任务被添加到你的应用程序的worker队列时[..],HireFire会启动新的worker dynos来处理这些任务。当队列为空时,HireFire将再次关闭worker dynos,这样你就不会为空闲的worker付费。

HireFire 还具有扩展您的 Web Dynos 的能力。当您的 Web 应用程序在一天中的某些时间经历高流量,或者如果您在某处被推荐,那么您的应用程序的队列可能会增长到一定程度,以至于您的 Web 应用程序会运行得非常慢,甚至更糟,可能会导致超时。为了防止这种情况,当流量增加时,HireFire 将自动扩展您的 Web Dynos,以确保应用程序始终快速运行。当流量下降时,HireFire 将再次关闭您的 Web Dynos。

—— 来自 HireFire 的首页

它支持以下 Python 队列系统作为后端

如果您使用的是不同的队列系统,请随时贡献其他后端

安装

使用您喜欢的安装程序安装 HireFire 包,例如

pip install HireFire

HireFire 上注册并使用 Heroku CLI(如特定 HireFire 应用程序页面 上提供的那样)设置 HIREFIRE_TOKEN 环境变量,例如

heroku config:set HIREFIRE_TOKEN=f69f0c0ddebe041248daf187caa6abb3e5d943ca

现在请遵循下面的快速入门指南,并不要忘记在 HireFire 管理系统 中调整选项。

如需更多帮助,请参阅 Hirefire 文档

配置

目前,hirefire Python 包支持三个框架:Django、Tornado 和 Flask。其他框架的实现计划中,但尚未着手:Pyramid (PasteDeploy)、WSGI 中间件、..

如果您无法等待,请随时贡献一个

以下指南假设您已定义至少一个与 Procfile 中的进程相匹配的 hirefire.procs.Proc 子类。对于您要监控的每个进程,您必须有一个子类。

例如,以下是一个使用 RQ 的“worker”进程的 Procfile

web: python manage.py runserver
worker: DJANGO_SETTINGS_MODULE=mysite.settings rqworker high default low

在项目的某个地方定义一个 RQProc 子类,例如 mysite/procs.py,并具有适当的属性(namequeues

from hirefire.procs.rq import RQProc

class WorkerProc(RQProc):
    name = 'worker'
    queues = ['high', 'default', 'low']

如果您使用的是其他后端,请参阅 procs API 文档。现在请遵循以下针对特定框架的指南。

Django

设置 HireFire 对 Django 的支持非常简单

  1. 'hirefire.contrib.django.middleware.HireFireMiddleware' 添加到您的 MIDDLEWARE 设置

    # Use ``MIDDLEWARE_CLASSES`` prior to Django 1.10
    MIDDLEWARE = [
        'hirefire.contrib.django.middleware.HireFireMiddleware',
        # ...
    ]

    确保它是列表/元组中的第一项。

  2. HIREFIRE_PROCS 设置为您的 procs 的点分路径列表。对于上面的示例 proc

    HIREFIRE_PROCS = ['mysite.procs.WorkerProc']
  3. HIREFIRE_TOKEN 设置为 HireFire 在特定 应用程序页面 上显示的令牌(可选)

    HIREFIRE_TOKEN = 'f69f0c0ddebe041248daf187caa6abb3e5d943ca'

    这仅在您尚未设置 HIREFIRE_TOKEN 环境变量的情况下需要(有关在 Heroku 上如何设置,请参阅安装部分)。

  4. 'hirefire.contrib.django.middleware.QueueTimeMiddleware' 添加到您的 MIDDLEWARE 设置以启用 HireFire 根据 Heroku 请求队列时间的缩放支持(可选)。

    # Use ``MIDDLEWARE_CLASSES`` prior to Django 1.10
    MIDDLEWARE = [
        'hirefire.contrib.django.middleware.HireFireMiddleware',
        # ...
    ]

    确保将其放置在列表/元组中的任何其他项之前,以便尽可能准确地计算请求队列时间。

  5. 通过在浏览器中打开以下 URL 来检查中间件是否已正确设置

    http://localhost:8000/hirefire/test

    您应该看到一个空页面,上面写着“HireFire Middleware Found!”。

    您还可以查看 HireFire 用于获取当前任务数量的页面

    http://localhost:8000/hirefire/<HIREFIRE_TOKEN>/info

    在需要替换 <HIREFIRE_TOKEN> 的地方,请用您的令牌替换,或者 - 如果您还没有在设置或环境中设置令牌 - 只需使用 development

Tornado

为 Tornado 设置 HireFire 支持也很简单

  1. 在定义您的 tornado.web.Application 实例时使用 hirefire.contrib.tornado.handlers.hirefire_handlers

    import os
    from hirefire.contrib.tornado.handlers import hirefire_handlers
    
    application = tornado.web.Application([
        # .. some patterns and handlers
    ] + hirefire_handlers(os.environ['HIREFIRE_TOKEN'],
                          ['mysite.procs.WorkerProc']))

    确保向 hirefire_handlers 函数传递一个点分隔路径的列表。

  2. HIREFIRE_TOKEN 环境变量设置为 HireFire 在特定 应用程序页面 上显示的令牌(可选)

    export HIREFIRE_TOKEN='f69f0c0ddebe041248daf187caa6abb3e5d943ca'

    有关在 Heroku 上如何执行此操作的说明,请参阅上面的安装部分。

  3. 通过在浏览器中打开以下 URL 来检查处理器的设置是否正确

    http://localhost:8888/hirefire/test

    您应该看到一个空页面,上面写着“HireFire Middleware Found!”。

    您还可以查看 HireFire 用于获取当前任务数量的页面

    http://localhost:8888/hirefire/<HIREFIRE_TOKEN>/info

    在需要替换 <HIREFIRE_TOKEN> 的地方,请用您的令牌替换,或者 - 如果您还没有将令牌设置为环境变量 - 只需使用 development

Flask

为 Flask 设置 HireFire 支持也很简单(再次!)

  1. hirefire.contrib.flask.blueprint 模块提供了一个 build_hirefire_blueprint 工厂函数,该函数应使用 HireFire 令牌和进程作为参数调用。结果是提供 hirefire 路由的蓝图,该蓝图应在您的应用程序内部注册

    import os
    from flask import Flask
    from hirefire.contrib.flask.blueprint import build_hirefire_blueprint
    
    app = Flask(__name__)
    bp = build_hirefire_blueprint(os.environ['HIREFIRE_TOKEN'],
                                  ['mysite.procs.WorkerProc'])
    app.register_blueprint(bp)

    确保向 build_hirefire_blueprint 函数传递一个点分隔路径的列表。

  2. HIREFIRE_TOKEN 环境变量设置为 HireFire 在特定 应用程序页面 上显示的令牌(可选)

    export HIREFIRE_TOKEN='f69f0c0ddebe041248daf187caa6abb3e5d943ca'

    有关在 Heroku 上如何执行此操作的说明,请参阅上面的安装部分。

  3. 通过在浏览器中打开以下 URL 来检查处理器的设置是否正确

    http://localhost:8080/hirefire/test

    您应该看到一个空页面,上面写着“HireFire Middleware Found!”。

    您还可以查看 HireFire 用于获取当前任务数量的页面

    http://localhost:8080/hirefire/<HIREFIRE_TOKEN>/info

    在需要替换 <HIREFIRE_TOKEN> 的地方,请用您的令牌替换,或者 - 如果您还没有将令牌设置为环境变量 - 只需使用 development

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分发

HireFire-1.1.tar.gz (25.4 kB 查看哈希值)

上传时间

构建分发

HireFire-1.1-py2.py3-none-any.whl (26.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面