我最近一直在阅读有关芹菜的信息,它适合我的许多应用需求。但是我在使我的celery应用程序可重用时遇到问题,对于我现在所做的事情,现在看来有点静止。我已经用celery在python(newbie)中开发了一个应用程序。它有一堆任务,所有任务都链接在一起。像这样的东西:
readStartDocument can only be called when CurrentBSONType is DOCUMENT, not when CurrentBSONType is STRING.
此处celery.py具有“应用”信息:
- myapp
|_ executor.py
- myapp/util
|_ celery.py
|_ tasks.py
andtasks.py具有以下任务列表:
myapp = Celery(main="util.celery", broker="pyamqp://myname:mypass@localhost/my_vhost", backend="rpc://", include=["myapp.tasks"])
最后是executor.py是:
@myapp.task(bind=True,name='task1')
def task1():
...
@myapp.task(bind=True,name='task2')
def task2():
...
#... and so on till task20
现在,当myapp必须从task1到task20执行时,这非常有用,但是我有点喜欢10种不同的场景,其中不一定要使用所有20个任务(链接)。根据方案,我可能需要从这20个任务中链接不同的任务集,即方案1仅需要运行前5个任务。所以,我现在的问题是,从这些中做到最好的方法是什么?
from util.tasks import task1, task2,...task20
...
mychain=chain(task1, task2, task3, task4,...task20)
mychain.apply_async()
这对我来说很难,因为我对celery和python都是陌生的。有人可以建议一个很好的方法来很好地实现我的最终目标吗?