Python 芹菜腌制错误
我尝试使用芹菜(和rabbitmq)与Flask mail异步发送电子邮件。起初,我对flask breaking芹菜的render_模板有一个问题(芹菜任务仍然会成功执行,但没有发送电子邮件)。当我试图解决这个问题(这个问题还没有解决!)时,我偶然发现了另一个问题。此酸洗错误是由线程锁定引起的。我注意到,当我改变调用芹菜任务的方式(从延迟到应用异步)时,问题就开始了。从那时起,我试图恢复我的更改,但我仍然无法摆脱错误。我们将非常感谢您对任何一个问题的帮助 回溯:Python 芹菜腌制错误,python,flask,rabbitmq,celery,flask-mail,Python,Flask,Rabbitmq,Celery,Flask Mail,我尝试使用芹菜(和rabbitmq)与Flask mail异步发送电子邮件。起初,我对flask breaking芹菜的render_模板有一个问题(芹菜任务仍然会成功执行,但没有发送电子邮件)。当我试图解决这个问题(这个问题还没有解决!)时,我偶然发现了另一个问题。此酸洗错误是由线程锁定引起的。我注意到,当我改变调用芹菜任务的方式(从延迟到应用异步)时,问题就开始了。从那时起,我试图恢复我的更改,但我仍然无法摆脱错误。我们将非常感谢您对任何一个问题的帮助 回溯: File "/Users/..
File "/Users/.../python2.7/site-packages/celery/app/amqp.py", line 250, in publish_task
**kwargs
File "/Users/.../lib/python2.7/site-packages/kombu/messaging.py", line 157, in publish
compression, headers)
File "/Users/.../lib/python2.7/site-packages/kombu/messaging.py", line 233, in _prepare
body) = encode(body, serializer=serializer)
File "/Users/.../lib/python2.7/site-packages/kombu/serialization.py", line 170, in encode
payload = encoder(data)
File "/Users/.../lib/python2.7/site-packages/kombu/serialization.py", line 356, in dumps
return dumper(obj, protocol=pickle_protocol)
PicklingError: Can't pickle <type 'thread.lock'>: attribute lookup thread.lock failed
在测试用例中,我只调用:
send_auth_email.delay(test_app, nick, email)
仅供参考:如果我不使用芹菜(即同步),API工作得非常好。提前谢谢 当您调用
send\u auth\u email.delay(test\u app,nick,email)
时,所有函数参数都将被发送到任务队列。为了做到这一点,芹菜腌制它们
简短回答test\u app
,作为烧瓶应用程序,使用了一些魔法,不能被浸泡。有关哪些可以腌制,哪些不可以腌制的详细信息,请参阅
一种解决方案是,当您调用
send\u auth\u email时,传递所有必要的参数(在您的情况下,这似乎是唯一的名称)以在send\u auth\u email
中重新实例化test\u app
。为了做到这一点,芹菜腌制它们
简短回答test\u app
,作为烧瓶应用程序,使用了一些魔法,不能被浸泡。有关哪些可以腌制,哪些不可以腌制的详细信息,请参阅
一种解决方案是在send\u auth\u email
中传递所有必要的参数(在您的情况下,这似乎是唯一的名称)以重新实例化test\u app
,它是flask应用程序的一个实例。仅供参考-我没有celeryconfig.py文件和结果后端。这应该是一个问题吗?不,这将导致进一步的错误,这显然不取决于这一点。根据您的回复更新了答案。这是flask应用程序的一个实例。仅供参考-我没有celeryconfig.py文件和结果后端。这应该是一个问题吗?不,这将导致进一步的错误,这显然不取决于这一点。根据您的回复更新答案。
send_auth_email.delay(test_app, nick, email)