安装和配置芹菜的构建方法
collective.recipe.celer的Python项目详细描述
Introduction
此配方安装芹菜并创建一个celeryconfig.py模块 指定的配置选项。它有助于管理多个配置 (例如开发和生产)使用构建。
您可以在这样的部分中使用它:
[celery] recipe = collective.recipe.celery broker-transport = sqlakombu.transport.Transport broker-host = sqlite:///celery_broker.db result-backend = database result-dburi = sqlite:///celery_results.db imports = myapp.tasks eggs = kombu-sqlalchemy myapp
Supported options
General options
- 鸡蛋
- 您想提供给芹菜的附加鸡蛋列表。用这个来 添加其他依赖项,如kombu-sqlalchemy或模块 包含您的任务定义。
- 脚本
- 控制生成哪些脚本。如果省略了这个选项,那么 将生成脚本。如果没有给定值,则脚本生成为 已禁用。
- 配置路径
包含celeryconfig.py模块的目录的位置。由 默认情况下,在部件目录中创建配置模块。 您可以在其他部分中使用它来包括配置模块:
[celery] recipe = collective.recipe.celery [myapp] recipe = zc.recipe.egg eggs = myapp extra-paths = ${celery:config-path}
Celery options
支持以下配置选项。参见芹菜文档 更多细节。
- 代理传输
- 要使用的Kombu交通工具。您可以使用自定义传输类名,或者 选择一个内置传输:amqplib,pika,redis, beanstalk,sqlalchemy,django,mongodb,couchdb。
- 代理主机
- 代理的主机名。
- 代理端口
- 代理的端口号。
- 代理用户
- 要连接的用户名。
- 代理密码
- 要连接的密码。
- 经纪人vhost
- 虚拟主机。
- 结果后端
- 用于存储任务结果的后端。可以是database之一, cache,mongodb,redis,tyrant或amqp。
- 结果dburi
- 数据库结果后端的连接字符串。
- 导入
- 芹菜守护进程启动时要导入的模块列表。指定一个 每行模块。
- 芹菜日志文件
- 芹菜守护进程将消息记录到的文件名。
- 芹菜原木水平
- 日志级别可以是DEBUG、INFO、WARNING、ERROR或 CRITICAL.
- 芹菜的并发性
- 正在执行的并发工作进程/线程/绿色线程数 任务。
- 附加配置
可以使用 additional-config选项。
示例:
additional-config = CELERY_TASK_PUBLISH_RETRY=True CELERY_TASK_PUBLISH_RETRY_POLICY={"max_retries": 2, "interval_start": 10, "interval_step": 0, "interval_max": 10}
Example usage
我们将从创建使用配方的构建开始:
>>> write(sample_buildout, 'buildout.cfg', ... """ ... [buildout] ... parts = celery ... index = %(server)s/index ... find-links = %(server)s ... ... [celery] ... recipe = collective.recipe.celery ... broker-transport = sqlakombu.transport.Transport ... broker-host = sqlite:///celery_broker.db ... result-backend = database ... result-dburi = sqlite:///celery_results.db ... imports = myapp.tasks ... """% dict(server=link_server))
运行构建会给我们带来:
>>> print system(buildout) Installing celery. celery: Creating directory /sample-buildout/parts/celery. celery: Generated config file /sample-buildout/parts/celery/celeryconfig.py. Getting distribution for 'celery'. Got celery 2.3.1. Generated script '/sample-buildout/bin/celeryctl'. Generated script '/sample-buildout/bin/celeryd'. <BLANKLINE>
检查我们是否有芹菜脚本:
>>> ls(sample_buildout, 'bin') - buildout - celeryctl - celeryd
检查是否有芹菜配置文件:
>>> ls(sample_buildout, 'parts', 'celery') - celeryconfig.py
如果运行celerid脚本,它会打印出配置数据:
>>> print(system(join(sample_buildout, 'bin', 'celeryd'))) BROKER_HOST='sqlite:///celery_broker.db' BROKER_TRANSPORT='sqlakombu.transport.Transport' CELERY_IMPORTS=('myapp.tasks',) CELERY_RESULT_BACKEND='database' CELERY_RESULT_DBURI='sqlite:///celery_results.db' <BLANKLINE>
我们可以使用“鸡蛋”选项包括其他鸡蛋:
>>> write(sample_buildout, 'buildout.cfg', ... """ ... [buildout] ... parts = celery ... index = %(server)s/index ... find-links = %(server)s ... ... [celery] ... recipe = collective.recipe.celery ... eggs = ... other ... """% dict(server=link_server)) >>> print system(buildout), Uninstalling celery. Installing celery. celery: Generated config file /sample-buildout/parts/celery/celeryconfig.py. Getting distribution for 'other'. Got other 1.0. Generated script '/sample-buildout/bin/celeryctl'. Generated script '/sample-buildout/bin/celeryd'.
我们可以使用scripts选项控制生成哪些脚本。 如果未给出值,则禁用脚本生成:
>>> write(sample_buildout, 'buildout.cfg', ... """ ... [buildout] ... parts = celery ... index = %(server)s/index ... find-links = %(server)s ... ... [celery] ... recipe = collective.recipe.celery ... scripts = ... """% dict(server=link_server)) >>> print system(buildout), Uninstalling celery. Installing celery. celery: Generated config file /sample-buildout/parts/celery/celeryconfig.py. >>> ls(sample_buildout, 'bin') - buildout
我们只创建芹菜脚本:
>>> write(sample_buildout, 'buildout.cfg', ... """ ... [buildout] ... parts = celery ... index = %(server)s/index ... find-links = %(server)s ... ... [celery] ... recipe = collective.recipe.celery ... scripts = ... celeryd ... """% dict(server=link_server)) >>> print system(buildout), Uninstalling celery. Installing celery. celery: Generated config file /sample-buildout/parts/celery/celeryconfig.py. Generated script '/sample-buildout/bin/celeryd'. >>> ls(sample_buildout, 'bin') - buildout - celeryd
支持的配置指令可以是多种类型,包括 字符串、整数和元组:
>>> write(sample_buildout, 'buildout.cfg', ... """ ... [buildout] ... parts = celery ... index = %(server)s/index ... find-links = %(server)s ... ... [celery] ... recipe = collective.recipe.celery ... broker-port = 8080 ... broker-user = guest ... imports = ... myapp.tasks ... other.tasks ... """% dict(server=link_server)) >>> print system(buildout), Uninstalling celery. Installing celery. celery: Generated config file /sample-buildout/parts/celery/celeryconfig.py. Generated script '/sample-buildout/bin/celeryctl'. Generated script '/sample-buildout/bin/celeryd'.
让我们验证生成的配置数据:
>>> cat(sample_buildout, 'parts', 'celery', 'celeryconfig.py') BROKER_PORT = 8080 BROKER_USER = 'guest' CELERY_IMPORTS = ('myapp.tasks', 'other.tasks') <BLANKLINE>
配方支持一组有限的芹菜配置指令。任何 可以使用附加配置选项添加附加指令:
>>> write(sample_buildout, 'buildout.cfg', ... """ ... [buildout] ... parts = celery ... index = %(server)s/index ... find-links = %(server)s ... ... [celery] ... recipe = collective.recipe.celery ... additional-config = ... CELERY_TASK_PUBLISH_RETRY = True ... CELERY_TASK_PUBLISH_RETRY_POLICY = {"max_retries": 2, ... "interval_start": 10, ... "interval_step": 0, ... "interval_max": 10} ... """% dict(server=link_server)) >>> print system(buildout), Uninstalling celery. Installing celery. celery: Generated config file /sample-buildout/parts/celery/celeryconfig.py. Generated script '/sample-buildout/bin/celeryctl'. Generated script '/sample-buildout/bin/celeryd'.
让我们验证生成的配置数据:
>>> cat(sample_buildout, 'parts', 'celery', 'celeryconfig.py') CELERY_TASK_PUBLISH_RETRY = True CELERY_TASK_PUBLISH_RETRY_POLICY = {"max_retries": 2, "interval_start": 10, "interval_step": 0, "interval_max": 10} <BLANKLINE>