常见的芹菜工人为不同的客户有不同的DB

时间:2014-10-29 18:06:08

标签: python django celery django-celery

我使用芹菜与django并将任务结果存储在数据库中。 我考虑让一组工作人员从单个消息代理中读取消息。现在我可以让多个客户提交芹菜任务,每个客户端都会创建/存储在不同数据库中的任务和结果。 即使工人很普遍,他们也知道每个任务要操作哪个DB。

我是否可以生成重复的任务ID,因为它们是由指向不同数据库的不同客户端提交的?

谢谢,

1 个答案:

答案 0 :(得分:1)

最终你会有重复的。许多人忽略了这个问题,因为它是“低概率”,然后当它击中它们时会感到惊讶。然后一个故事泄露了某人登录到另一个人使用Facebook帐户的方式。如果您要求它们始终是唯一的,那么您必须为每个ID添加一些永远不会重复的内容 - 例如当前日期和时间以微秒为单位。

如果这还不够好,因为仍然存在更小的碰撞机会,你可以创建一个生成这些前缀的小应用程序,并添加一个计数器(在每个哈希请求后递增,并重置每个几秒钟)到日期和微秒。它必须在单线程模式下工作,但这将保证生成不会发生冲突的唯一前缀。