运行和监视芹菜任务
cubicweb-celerytask的Python项目详细描述
摘要
运行、监视和记录芹菜任务。
安装和设置
使用芹菜任务或cubicweb芹菜任务声明任务。
在工作端,安装cw-celerytask-helpers。
celleryconfig.py示例:
CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = BROKER_URL CUBICWEB_CELERYTASK_REDIS_URL = CELERY_BROKER_URL CELERY_IMPORTS = ('cw_celerytask_helpers.helpers', 'module.containing.tasks')
在这个配置示例中,cw_celerytask_helpersin CELERY_IMPORTS需要发送日志数据(在任务中) 通过redis返回到cubicweb实例。这个 CUBICWEB_CELERYTASK_REDIS_URL是用于此的redis终结点 日志处理机制。
启动工人:
# running cubicweb tasks (celeryconfig.py will be imported from your instance config directory) celery -A cubicweb_celery -i <CW_INSTANCE_NAME> worker -l info # running pure celery tasks celery worker -l info
任务状态同步需要运行芹菜监视器命令:
cubicweb-ctl celery-monitor <instance-name>
确保为cubicweb实例和 芹菜工人,通过芹菜配置模块环境的设置强制执行 变量(它必须是可导入的python模块)。
运行任务
创建任务:
fromceleryimportcurrent_appasappfromcelery.utils.logimportget_task_loggerlogger=get_task_logger(__name__)@app.task(name='hi_there')defmy_task(arg,kw=0):logger.info('HI %s%s!',arg,kw)return42
运行任务:
fromcubicweb_celerytask.entitiesimportstart_async_taskcwtask=start_async_task(cnx,'hi_there','THERE',kw=42)cnx.commit()
start_async_task()接受任务名称、任务对象或任务签名: http://docs.celeryproject.org/en/latest/userguide/canvas.html#signatures
例如,要在名为myqueue的专用队列中启动上述任务:
importcelerystart_async_task(cnx,celery.signature('hi_there',args=('THERE',),kwargs={'kw':42},queue='myqueue'))
测试基于任务的应用程序
在cubicweb测试模式下,任务不会自动运行,使用 cubicweb\u cellerytask.entities.get\u tasks()来反省它们 cubicweb\u cellerytask.entities.run\u all\u tasks()运行它们。
此外,芹菜总是渴望和芹菜传播的例外设置为 默认情况下为true。