擅长:python、mysql、java
<p>我也有类似的问题。网上的大多数例子都已经过时了,文档没有多大帮助,但是文档中有指向源代码的链接,阅读确实对我有帮助。
我的目标是分组组织并行任务。这些组必须按顺序执行。
所以我决定<strong>在分别开始任何任务之前生成任务id,并且只分配它们。我用的是芹菜4.3.0</p>
<p>下面是一个简单的例子。在</p>
<p>首先,我需要一个虚拟任务使执行顺序化,并能够检查某个组的状态。由于这是一个回调函数,它只会在组中的所有其他任务之后完成。在</p>
<pre><code>@celery.task(bind=True, name="app.tasks.dummy_task")
def dummy_task( self, results=None, *args, **kwargs ):
return results
</code></pre>
<p>我在这里的评论解释了如何分配id。在</p>
^{pr2}$
<p>这就是我可以检查我的应用程序中任何任务的状态的方法。在</p>
<pre><code># This is a simplified example
# some code is omitted
from celery.result import AsyncResult
def task_status( task_id=None ):
# PENDING
# RECEIVED
# STARTED
# SUCCESS
# FAILURE
# REVOKED
# RETRY
task = AsyncResult(task_id)
response = {
'state': task.state,
}
return jsonify(response), 200
</code></pre>