Bru*_*sky 7 python celery celerybeat
我多次阅读了几页谷歌搜索结果,我对如何布置项目非常困惑.我已经设法让Celerybeat使用periodic_task装饰器工作,但是这是折旧的并且正被删除.根据我的理解,文档建议CELERYBEAT_SCHEDULE是替代品.我完全按照所示创建了一个文件,但还没有想到:
我发现很难找到在非Django项目中使用Celery的正确方法.
文档使它看起来像你的CELERYBEAT_SCHEDULE是一个单独的文件,这有点令人困惑.实际上,它是您的应用程序(又名:Celery()实例)配置中的一个条目,因为您可以在此处看到它.因此,无论您将配置放入您的应用程序,它就在哪里.
有很多方法可以将配置纳入应用程序.如果您认为" 明确比隐含更好 ",那么您可能希望:
celeryconfig.pyimport celeryconfigapp.config_from_object(celeryconfig)示例celeryconfig.py文件
from datetime import timedelta
BROKER_URL = "redis://redis.local:6379/0"
BROKER_TRANSPORT_OPTIONS = {'fanout_prefix': True, 'fanout_patterns': True, 'visibility_timeout': 480}
CELERY_RESULT_BACKEND = BROKER_URL
CELERYBEAT_SCHEDULE = {
'addrandom-to-16K-every-2-seconds': {
'task': 'celery_test.tasks.addrandom', # notice that the complete name is needed
'schedule': timedelta(seconds=2),
'args': (16000, 42)
},
}
CELERY_TIMEZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)
试着将它放入一个像beatschedule.py然后运行的文件celery -A beatschedule beat将得到你AttributeError: 'module' object has no attribute 'celery'
我按照文档中的描述创建了这个项目来演示Celerybeat.我相信它比单独阅读文档更好地展示了它的运作方式.我还创建了这个Docker镜像,使其尽可能简单地运行起来.