1

我坚持使用 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模块)。

那么,这里的解决方案是什么?

谢谢。

4

1 回答 1

3

我使用以下命令在 Windows 上运行 celery beat:

python manage.py celery beat

按照以下步骤进行安装后:

在 Windows 上运行 celery beat

它对我来说非常好!

于 2017-01-17T08:58:11.183 回答