python - Celery Beat Windows 简单示例(不适用于 Django)

标签 python celery cherrypy celerybeat

我真的很难在 Windows 7 上使用 Celery Beat 设置定期任务(不幸的是,这正是我目前正在处理的问题)。将使用 celery 的应用程序是用 CherryPy 编写的,因此 Django 库与此处无关。我正在寻找的只是一个如何在后台启动 Celery Beat Process 的简单示例。 FAQ 部分说了以下内容,但我还没有真正做到:

window

worker 的 -B/–beat 选项不起作用?¶

答:没错。将 celery beat 和 celery worker 作为单独的服务运行。

我的项目布局如下:

proj/
    __init__.py (empty)
    celery.py
    celery_schedule.py
    celery_settings.py (these work
    tasks.py

celery .py:

from __future__ import absolute_import

from celery import Celery
from proj import celery_settings
from proj import celery_schedule

app = Celery(
    'proj',
    broker=celery_settings.BROKER_URL,
    backend=celery_settings.CELERY_RESULT_BACKEND,
    include=['proj.tasks']
)

# Optional configuration, see the application user guide.
app.conf.update(
     CELERY_TASK_RESULT_EXPIRES=3600,
     CELERYBEAT_SCHEDULE=celery_schedule.CELERYBEAT_SCHEDULE
)

if __name__ == '__main__':
    app.start()

任务.py

from __future__ import absolute_import

from proj.celery import app


@app.task
def add(x, y):
    return x + y

celery_schedule.py

 from datetime import timedelta

 CELERYBEAT_SCHEDULE = {
     'add-every-30-seconds': {
          'task': 'tasks.add',
          'schedule': timedelta(seconds=3),
          'args': (16, 16)
     },
 }

从命令行(从“proj”的父目录)运行“celery worker --app=proj -l info”可以很好地启动工作线程,我可以从 Python 终端执行添加任务。但是,我只是不知道如何启动节拍服务。显然语法也可能不正确,因为我还没有通过缺少的 --beat 选项。

最佳答案

只需通过一个新的终端窗口启动另一个进程,确保您在正确的目录中并执行命令 celery beat(在 beat 关键字之前不需要“--”)。

如果这不能解决您的问题,请将您的 celery_schedule.py 文件重命名为 celeryconfig.py 并将其包含在您的 celery.py 文件中:app.config_from_object('celeryconfig') 就在您的名称 == 主要

然后生成一个新的celery beat进程:celery beat

关于python - Celery Beat Windows 简单示例(不适用于 Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22170650/

相关文章:

python - Matplotlib colorbar 未在 networkX 中使用正确的颜色图

python - 读取文件时使用 lambda 函数将日期转换为时间戳

python - 在 Celery 中实现 Twisted 风格的本地多个延迟回调

python - 如何通过 Mako 模板使用打印功能

python - 从包含特定单词的文本文件中过滤行

python - 如何将 pickle 数据上传到 django FileField?

python - celery 链式表演

heroku - Heroku 和 Redistogo Nano 上达到的最大客户数

python - 长不转换为字符串

python - Windows 10上Anaconda3如何获取安装包的权限?