因此,我有一个任务,我从该任务调用另一个发送电子邮件的任务:
@app.task(name='login.sync.register')
def register(user_obj):
result = user_service.register(user_obj)
from .async import send_verification_email
send_verification_email.delay(result['user']['id'])
return result邮件发送任务为:
@app.task(name='login.async.send_verification_email', bind=True, max_retries=3)
def send_verification_email(self, user_id):
try:
email_service.send_verification_email(user_id)
except Exception as exc:
raise self.retry(exc=exc)它第一次完美地工作了。电子邮件被发送。当我第二次调用注册任务时,它成功了,但是send_verification_email没有被执行。我在日志里没看到任何东西。
知道为什么吗?当我重新启动芹菜工作程序时,它第一次发送电子邮件,但在那之后就停止发送电子邮件了。
发布于 2014-01-22 05:12:05
首先,我认为像您这样使用广泛的异常处理程序不是一个好主意。除了例外,因为exc会对你隐藏任何问题,你永远不会知道实际发生了什么。
您可以在移除异步调用并使其同步之后调试您的代码:
Send_verification_email(结果“‘user”)
我会解释的。您需要删除所有.delay调用,并直接调用您的任务。在send_verification_email()任务中,您可以插入行
导入pdb;pdb.set_trace()
跟踪调用并查看email_service.send_verification_email(user_id).的结果
@app.task(name='login.async.send_verification_email', bind=True, max_retries=3)
def send_verification_email(self, user_id):
import pdb;pdb.set_trace()
email_service.send_verification_email(user_id)你也可以用更友好的pudb来代替pdb。你可以用'pip install pudb‘安装它
我不能评论,因为我刚刚注册,没有carma。
https://stackoverflow.com/questions/21266463
复制相似问题