芹菜:任务辛格尔顿?

Edd*_*ker 6 singleton communication task celery

我有一项任务需要从触发它的网页异步运行。该任务的运行时间相当长,并且由于网页可能会收到很多此类请求,因此我希望celery在给定的时间仅运行此任务的一个实例。

我有什么办法可以在Celery中本地执行此操作吗?我很想创建一个数据库表来保存所有要与之通信的任务的状态,但是感觉很hack。

use*_*098 2

您可能可以为配置了 CELERYD_CONCURRENCY=1 的任务创建一个专用工作线程,然后该工作线程上的所有任务都将同步运行

  • 您还可以使用 memcached/redis 或任何数据库,如下所述:http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#ensuring-a-task-is-only-execulated-one-一次 (2认同)