跳至主要内容

Celery的安装和配置构建脚本

项目描述

简介

此脚本安装Celery并创建一个具有指定配置选项的celeryconfig.py模块。它通过Buildout帮助管理多个配置(例如,开发和生产)。

您可以使用它如下

[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

支持选项

通用选项

eggs

要提供给Celery使用的附加egg列表。使用此选项添加其他依赖项,例如kombu-sqlalchemy或包含您的任务定义的模块。

scripts

控制生成的脚本。如果省略此选项,则将生成所有脚本。如果没有提供值,则禁用脚本生成。

config-path

包含celeryconfig.py模块的目录位置。默认情况下,配置模块在部分目录中创建。您可以使用此选项在其他部分中包含配置模块

[celery]
recipe = collective.recipe.celery

[myapp]
recipe = zc.recipe.egg
eggs = myapp
extra-paths = ${celery:config-path}

Celery选项

以下配置选项受支持。有关更多详细信息,请参阅Celery文档。

broker-transport

要使用的Kombu传输。您可以使用自定义传输类名称,或选择以下内置传输之一:amqplibpikaredisbeanstalksqlalchemydjangomongodbcouchdb

broker-host

代理的主机名。

broker-port

代理的端口号。

broker-user

连接时使用的用户名。

broker-password

连接时使用的密码。

broker-vhost

虚拟主机。

result-backend

用于存储任务结果的后端。可以是以下之一:数据库缓存mongodbredistyrantamqp

result-dburi

数据库结果后端的连接字符串。

导入

在celery守护进程启动时导入的模块列表。每行指定一个模块。

celeryd-log-file

celery守护进程记录消息的文件名。

celeryd-log-level

日志级别,可以是以下之一:DEBUGINFOWARNINGERRORCRITICAL

celeryd-concurrency

执行任务的并发工作进程/线程/绿色线程的数量。

additional-config

可以使用 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}

变更日志

1.0 (2011-08-15)

  • 初始发布。[buchi]

示例用法

我们将首先创建一个使用该食谱的buildout

>>> 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))

运行buildout给出

>>> 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>

检查是否有celery脚本

>>> ls(sample_buildout, 'bin')
-  buildout
-  celeryctl
-  celeryd

检查是否获取了celery配置文件

>>> ls(sample_buildout, 'parts', 'celery')
- celeryconfig.py

如果我们运行celeryd脚本,它将打印出配置数据

>>> 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>

我们可以使用eggs选项包含额外的eggs

>>> 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

让我们只创建celeryd脚本

>>> 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>

该食谱支持celery的一组有限配置指令。任何额外的指令都可以使用additional-config选项添加

>>> 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>

项目详情


下载文件

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

源分发

collective.recipe.celery-1.0.tar.gz (17.4 kB 查看哈希)

上传时间

支持者

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