小编Pea*_*ley的帖子

如何使用Celery,RabbitMQ和Django确保每个用户的任务执行顺序?

我正在运行Django,Celery和RabbitMQ.我想要实现的是确保与一个用户相关的任务按顺序执行(具体来说,当时一个,我不希望每个用户的任务并发)

  • 每当为用户添加新任务时,它应该取决于最近添加的任务.其他功能可能包括不将任务添加到队列,如果此类型的任务排队等待该用户但尚未启动.

我做了一些研究,并且:

  • 我无法找到一种方法将新创建的任务与已在Celery中排队的任务链接起来,链似乎只能链接新任务.
  • 我认为使用自定义RabbitMQ消息处理程序可以实现这两种功能,尽管它可能很难编码.
  • 我也读过关于celery-tasktree的内容,这可能是确保执行顺序的最简单方法,但是如何将新任务与已经" applied_async"task_tree或队列相关联?有什么办法可以使用这个包实现额外的无重复功能吗?

编辑:在芹菜食谱中也有这个"锁定"的例子,因为这个概念很好,我看不到一种可能的方法让它在我的情况下按预期工作 - 只是如果我无法为用户获取锁定,任务必须重试,但这意味着将它推到队列的末尾.

这里最好的做法是什么?

python django rabbitmq celery django-celery

9
推荐指数
1
解决办法
994
查看次数

标签 统计

celery ×1

django ×1

django-celery ×1

python ×1

rabbitmq ×1