Celery 不同类型的任务配置 config,是不是要在初始化的时候,分别实例化?

2017-10-05 14:55:52 +08:00
 miniyao
比如,三个异步任务,分别是:

1、一个普通的异步任务
2、一个每隔 10 分钟执行一次的任务
3、每天 12 点执行一次的任务

这三个任务都需要应用上下文支持,是不是要在初始化的时候,分别实例化?

celery1 = Celery(__name__, ...)
celery2 = Celery(__name__, ...)
celery3 = Celery(__name__, ...)

感觉好别扭啊
2511 次点击
所在节点    Python
5 条回复
Hstar
2017-10-05 15:25:54 +08:00
是在一个 Celery 里注册这三个任务....

难道你开十个普通异步任务要十个实例吗...
miniyao
2017-10-05 22:16:10 +08:00
@Hstar 开十个普通异步任务我知道呀,一般用装饰器装饰一下就可用 @celery.task_A() @celery.task_B() @celery.task_C() ... 这些普通异步任务都是用相同的 Celery config。

我说的问题是定时任务,如“一个每隔 10 分钟执行一次的任务”,“每天 12 点执行一次的任务”这些配置不同啊,直接复用 @celery.task_*(),这怎么区分是普通异步任务?还是定时异步任务呢?
spritevan
2017-10-05 23:57:13 +08:00
junzki
2017-10-06 13:56:20 +08:00
@miniyao Celery 不区分这个。Celery 的定时任务需要一个专门的守护进程 celery beep。大致原理就是 celery beep 发起一个异步任务,由 celery worker 执行。
kevindu
2017-10-13 17:56:34 +08:00
可以在配置里面写,也可以在任务中指定

CELERYBEAT_SCHEDULE = {
'task_a': {
'task': 'first_task',
'schedule': crontab(hour=18, minute=00),
'kwargs': {'stype': 'example'}
},
"task_b": {
"task": "second_task",
"schedule": crontab(hour=16, minute=30)
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/395510

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX