当视图第一次运行时,任务会执行两次

时间:2014-11-24 07:13:10

标签: python django redis celery

我的机器和服务器上的配置几乎相同但由于某种原因在服务器上,我的任务之一每次运行都会执行两次。

这是任务本身:

@shared_task
def send_congratulations_email(user_id):
    user = User.objects.get(id=user_id)
    letter = MailLetter.objects.get(id=5)
    letter.send_letter({'{{USERNAME}}': user.name}, user.email)

以下是我将此任务添加到队列中的部分内容:

if self.kwargs['action'] == 'confirm':
    user.is_active = True
    user.save()
    send_congratulations_email.delay(user_id=user.pk)

正如我在日志中看到的,芹菜工人正在接受这个任务两次:

[2014-11-24 07:06:42,901: INFO/MainProcess] Received task: users.tasks.send_congratulations_email[9b04709b-52ae-4602-8f38-1bebb40986b9]
[2014-11-24 07:06:43,103: INFO/MainProcess] Received task: users.tasks.send_congratulations_email[3138895a-4efb-438d-a20f-c71d42e50b64]

我还注意到,只有在我第一次点击指向特定视图的网址时才会发生这种情况。之后,当我打开相同的URL时,只有一个任务被执行。

顺便说一句,我使用Redis作为消息代理。也许这可能是问题所在。但我也在我的开发机器上使用Redis,那里没有这样的问题。

0 个答案:

没有答案