我真的很难在 Windows 7 上使用 Celery Beat 设置定期任务(不幸的是,这就是我目前正在处理的问题)。将使用 celery 的应用程序是用 CherryPy 编写的,因此 Django 库在这里不相关。我正在寻找的只是一个如何在后台启动 Celery Beat Process 的简单示例。常见问题解答部分说明了以下内容,但我还没有真正做到这一点:
视窗
worker 的 -B / –beat 选项不起作用?¶
答:没错。将 celery beat 和 celery worker 作为单独的服务运行。
我的项目布局如下:
proj/
__init__.py (empty)
celery.py
celery_schedule.py
celery_settings.py (these work
tasks.py
芹菜.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 选项。