气流调度器故障

时间:2018-08-13 14:40:57

标签: celery airflow-scheduler

我关注了 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 1.8.0以及Celery 3.1.25和RabbitMQ 3.5.7用作代理和后端,但也尝试了将Airflow 1.9.0与Celery 4.2一起使用。
  • 具有顺序执行器的气流可以正常工作。
  • `气流测试“ dag_name ”“ task_name ”“ exec_date ”成功运行。

我是Airflow / Celery / RabbitMQ / SQL的新手,所以我们将不胜感激!

2 个答案:

答案 0 :(得分:3)

似乎您将librabbitmq用作amqp代理,这是芹菜核心团队不推荐的。将py-amqp用作Rabbitmq代理,您应该摆脱此错误。

答案 1 :(得分:3)

添加到上一个答案。使用py-amqp涉及从broker_url = amqp://XXXXX更改为broker_url = pyamqp://XXXXXpip uninstall librabbitmq

另外,您可能需要在celery_result_backend中将result_backend变量更改为airflow.cfg。在最新版本中,celery_的{​​{1}}节点中的变量[celery]已被删除。