我的机器和服务器上的配置几乎相同但由于某种原因在服务器上,我的任务之一每次运行都会执行两次。
这是任务本身:
@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,那里没有这样的问题。