Python 芹菜腌制错误

Python 芹菜腌制错误,python,flask,rabbitmq,celery,flask-mail,Python,Flask,Rabbitmq,Celery,Flask Mail,我尝试使用芹菜(和rabbitmq)与Flask mail异步发送电子邮件。起初,我对flask breaking芹菜的render_模板有一个问题(芹菜任务仍然会成功执行,但没有发送电子邮件)。当我试图解决这个问题(这个问题还没有解决!)时,我偶然发现了另一个问题。此酸洗错误是由线程锁定引起的。我注意到,当我改变调用芹菜任务的方式(从延迟到应用异步)时,问题就开始了。从那时起,我试图恢复我的更改,但我仍然无法摆脱错误。我们将非常感谢您对任何一个问题的帮助 回溯: File "/Users/..

我尝试使用芹菜(和rabbitmq)与Flask mail异步发送电子邮件。起初,我对flask breaking芹菜的render_模板有一个问题(芹菜任务仍然会成功执行,但没有发送电子邮件)。当我试图解决这个问题(这个问题还没有解决!)时,我偶然发现了另一个问题。此酸洗错误是由线程锁定引起的。我注意到,当我改变调用芹菜任务的方式(从延迟到应用异步)时,问题就开始了。从那时起,我试图恢复我的更改,但我仍然无法摆脱错误。我们将非常感谢您对任何一个问题的帮助

回溯:

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)