apache-airflow1.9.0 + python3 + rabbitmq + librabbitmq2.0.0

相关配置如下:

broker_url = amqp://cord:123456@localhost:5672//
celery_result_backend = rpc://

结果运行的时候抛出如下异常:

TypeError can't pickle memoryview objects XXXX

原因分析:

airflow 1.9.0使用的是celery4.x, 而celery 4.x使用json序列化,而不是用pickle进行序列化。

因此需要将librabbitmq改为pyamqp

http://docs.celeryproject.org/en/latest/userguide/configuration.html#conf-database-result-backend

因此将broker_url配置协议修改为pyamqp即可:

broker_url = pyamqp://cord:123456@localhost:5672//

参考链接:

https://github.com/celery/celery/issues/4693

05-11 18:21