擅长:python、mysql、java
<p>工作失误是不正常的,你一定要担心。</p>
<p>至于长时间运行的作业上的ack/restarts:芹菜做得最好,但是如果您偏执,并且您期望有一个保证的交付/执行/ack模型,即使父/工作进程在异常情况下死亡,您也可以考虑使用辅助数据存储来跟踪进度和元数据,以便进行精细的控制:</p>
<pre><code>Client->TransactionalDB: insert JOB
Client->Celery: send_async(job_id)
Celery->Worker: do(job_id)
Worker->TransactionalDB: update started job + meta
...
Worker->TransactionalDB: update progress + meta
...
?->Worker: die!
...
Celerybeat->Worker: checkForOrphans()
Worker->TransactionalDB: select where ...
</code></pre>