我真的很难在Windows 7上使用Celery Beat设置周期性任务(不幸的是,这正是我目前正在处理的事情)。将使用芹菜的应用程序是用CherryPy编写的,因此Django库与此处无关。我正在寻找的是一个如何在后台启动Celery Beat Process的简单示例。 FAQ部分说明如下,但我还没有真正做到:
窗
worker的-B / -beat选项不起作用?¶
答案:没错。将celery beat和芹菜工作者作为单独的服务来代替。
我的项目布局如下:
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()
tasks.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)
},
}
从命令行运行“celery worker --app = proj -l info”(从“proj”的父目录)启动工作线程就好了,我可以从Python终端执行添加任务。但是,我只是无法弄清楚如何启动节拍服务。显然语法可能也是错误的,因为我没有超过缺少的--beat选项。
答案 0 :(得分:2)
只需通过新的终端窗口启动另一个进程,确保您在正确的目录中并执行celery beat命令(在beat关键字之前不需要' - ')。
如果这不能解决您的问题,请将您的celery_schedule.py文件重命名为celeryconfig.py,并将其包含在您的celery.py文件中:app.config_from_object('celeryconfig')在名称 == main
然后产生一个新的芹菜节拍过程:芹菜击败