我关注了
this教程,尝试使用我自己的DAG在localhost上构建气流集群。在配置文件中设置airflow scheduler
后运行executor = CeleryExecutor
时,收到以下回溯:
回溯(最近通话最近一次):
文件“ / home / yurii / Tools / anaconda3 / bin / airflow”,第28行,在 args.func(args)
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/airflow/bin/cli.py”,行839,在调度程序job.run()中
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/airflow/jobs.py”,第200行,正在运行 self._execute()
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/airflow/jobs.py”,行1309,在_execute中 self._execute_helper(processor_manager)
_execute_helper中的文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/airflow/jobs.py”,第1441行 self.executor.heartbeat()
文件“第124行,心跳中的文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/airflow/executors/base_executor.py” self.execute_async(key,command = command,queue = queue)
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/airflow/executors/celery_executor.py”,行80,在execute_async中 args = [command],queue = queue)
apply_async中的文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/celery/app/task.py”,第573行 ** dict(self._get_exec_options(),** options)
send_task中的文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/celery/app/base.py”,第354行 reply_to = reply_to或self.oid,**选项
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/celery/app/amqp.py”,第310行,在publish_task中 **变态
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/kombu/messaging.py”,第172行,已发布 routing_key,强制,立即,交换,声明)
文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/kombu/connection.py”,第449行,已_ensured 返回乐趣(* args,** kwargs)
_publish中的文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/kombu/messaging.py”,第188行 强制性=强制性,立即性=立即
第122行,在basic_publish中的文件“ /home/yurii/Tools/anaconda3/lib/python3.6/site-packages/librabbitmq/init.py” 强制或错误,立即或错误
TypeError:必须为整数(整数类型为NoneType)
一些其他信息:
我是Airflow / Celery / RabbitMQ / SQL的新手,所以我们将不胜感激!
答案 0 :(得分:3)
似乎您将librabbitmq用作amqp代理,这是芹菜核心团队不推荐的。将py-amqp用作Rabbitmq代理,您应该摆脱此错误。
答案 1 :(得分:3)
添加到上一个答案。使用py-amqp涉及从broker_url = amqp://XXXXX
更改为broker_url = pyamqp://XXXXX
或
pip uninstall librabbitmq
。
另外,您可能需要在celery_result_backend
中将result_backend
变量更改为airflow.cfg
。在最新版本中,celery_
的{{1}}节点中的变量[celery]
已被删除。