我坚持使用 redis 作为后端在 Windows 7(以及后来的 2013 服务器)上运行 celery 3.1.17。
在我的celery.py
文件中,我定义了一个带有一个计划任务的应用程序
app = Celery('myapp',
backend='redis://localhost',
broker='redis://localhost',
include=['tasks']
)
app.conf.update(
CELERYBEAT_SCHEDULE = {
'dumdum': {
'task': 'tasks.dumdum',
'schedule': timedelta(seconds=5),
}
}
)
任务是将一行写入文件
@app.task
def dumdum():
with open('c:/src/dumdum.txt','w') as f:
f.write('dumdum actually ran !')
从命令行运行节拍服务
(venv) celery beat -A tasks
celery beat v3.1.17 (Cipater) is starting.
__ - ... __ - _
Configuration ->
. broker -> redis://localhost:6379/1
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%INFO
. maxinterval -> now (0s)
[2015-03-15 10:50:33,265: INFO/MainProcess] beat: Starting...
[2015-03-15 10:50:35,496: INFO/MainProcess] Scheduler: Sending due task dumdum (tasks.dumdum)
[2015-03-15 10:50:40,513: INFO/MainProcess] Scheduler: Sending due task dumdum (tasks.dumdum)
看起来很有希望,但什么也没发生。没有任何内容被写入文件。
关于runnig beat on windows的celery文档参考了这篇2011年的文章。文章解释了如何celeryd
在windows上作为调度器任务运行。celeryd
此后已被弃用,并且文章中所述的命令不再有效(没有celery.bin.celeryd
模块)。
那么,这里的解决方案是什么?
谢谢。