Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不同客户的普通芹菜工人具有不同的DBs_Python_Django_Celery_Django Celery - Fatal编程技术网

Python 不同客户的普通芹菜工人具有不同的DBs

Python 不同客户的普通芹菜工人具有不同的DBs,python,django,celery,django-celery,Python,Django,Celery,Django Celery,我在django中使用芹菜,并将任务结果存储在数据库中。 我正在考虑让一组工作人员从一个消息代理读取消息。现在,我可以让多个客户机提交芹菜任务,每个客户机都有任务,它们的结果创建/存储在不同的数据库中。 即使工人是普通人,他们也知道每个任务操作哪个数据库 我是否可以生成重复的任务ID,因为它们是由指向不同DBs的不同客户端提交的 谢谢,最终你会有重复的。许多人忽略了这个问题,因为这是一个“低概率”,然后当它击中他们时,他们会感到惊讶。然后有个故事泄露了某人是如何登录到另一个用户的Facebook

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

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


谢谢,

最终你会有重复的。许多人忽略了这个问题,因为这是一个“低概率”,然后当它击中他们时,他们会感到惊讶。然后有个故事泄露了某人是如何登录到另一个用户的Facebook帐户的。如果您要求它们总是唯一的,那么您必须在每个ID前面加上一些永远不会重复的前缀,比如当前日期和时间加上微秒


如果这还不够好,因为发生冲突的可能性更小,那么您可以创建一个小型应用程序来生成这些前缀,并在日期和微秒之间添加一个计数器(在每次哈希请求后递增,并每隔几秒钟重置一次)。它必须在单线程模式下工作,但这将保证生成不会冲突的唯一前缀。

由于芹菜使用uuid作为任务id,因此不太可能有重复的id。我正在阅读有关uuid的文章,试图了解生成uuid的原因,以及我们是否会产生冲突。您的答案是否适用于向代理提交任务的单个客户端(单个DB)?我很想知道从不同的客户端(单独的数据库、代码)向同一个代理提交任务是否会增加冲突的概率。@ksrini Volume会增加冲突的概率,因为UUID的一部分来自random(和Volume counter random)。在生成UUID时,除了随机性之外还考虑了什么,这取决于运行UUID的系统和实现,因此没有一个答案。谢谢<代码>在生成UUID时,除了随机之外,还考虑了什么,这取决于运行UUID的系统和有意义的实现。因此,我猜测,如果卷足够大,可以容纳从多个服务器提交任务的单个客户端(DB),那么就有可能与UUID发生冲突。@ksrini您的假设是正确的。直到最近,大多数开发人员都忽略了这个问题,因为这是一个长期的问题。他们不再这样做了,因为那个特定的问题导致人们,第一次访问网站的人,以随机用户(有时甚至是管理员用户)的身份登录。为什么?因为会话_id发生冲突。@ksrini顺便说一句,如果我帮助过你,请随意投票!