Airflow的新手,所以可能会有“陷阱”,这对我所缺少的退伍军人来说是显而易见的。
我有单独的Docker映像,它们运行Celery(用于执行程序),RabbitMQ(用于Celery)和Postgres(后端),以及Airflow调度程序,Web服务器和worker。我可以通过Web服务器手动执行DAG,而不会出现任何问题,并且回填运行会自动运行,就像您期望的那样。
当我尝试使用dag.run()
(即在IPython或pytest测试中)手动触发DAG的执行时,就会发生问题。在这种情况下,Web服务器的任务状态将保持“已调度”,并显示一条详细消息:“满足所有依赖关系,但任务实例未运行”。然后调用dag.run()
(即IPython)的进程将输出这样的日志,然后将其空闲:
[2018-11-28 19:39:55,327] {base_executor.py:56} INFO - Adding to queue: airflow run example_dag always_succeed 2018-11-29T00:39:48.309069+00:00 --pickle 2 --local
[2018-11-28 19:40:00,229] {celery_executor.py:83} INFO - [celery] queuing ('example_dag', 'always_succeed', datetime.datetime(2018, 11, 28, 19, 38, 45, 497661, tzinfo=<TimezoneInfo [UTC, GMT, +00:00:00, STD]>), 1) through celery, queue=airflow
“全气流” Web服务器的状态如下: