- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个使用 LocalExecutor
运行 airflow 1.8.0 的 EC2 实例。根据文档,我预计以下两个命令之一会在守护进程模式下启动调度程序:
airflow scheduler --daemon --num_runs=20
或
Airflow 调度程序 --daemon=True --num_runs=5
但事实并非如此。第一个命令似乎可以正常工作,但它只是在返回终端之前返回以下输出,而不产生任何后台任务:
[2017-09-28 18:15:02,794] {__init__.py:57} INFO - Using executor LocalExecutor
[2017-09-28 18:15:03,064] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/Grammar.txt
[2017-09-28 18:15:03,203] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/PatternGrammar.txt
第二个命令产生错误:
airflow scheduler: error: argument -D/--daemon: ignored explicit argument 'True'
这很奇怪,因为根据 docs --daemon=True
应该是 airflow scheduler
调用的有效参数。
再深入一点,我找到了 this StackOverflow post ,其中一个响应建议实现 systemd
,根据可用代码 this repo 将 Airflow 调度程序作为后台进程处理。 .
我对脚本的轻微编辑改编作为以下要点发布。我在 Ubuntu 16.04.3 中使用普通的 m4.xlarge EC2 实例:
从那里我打电话:
sudo systemctl enable airflow-scheduler
sudo systemctl start airflow-scheduler
什么也没有发生。虽然我在这个实例上运行了更复杂的 DAG,I am using this dummy case创建一个简单的测试,它也可以作为一个监听器,让我知道调度程序何时按计划运行。
我一直在使用 journalctl -f
进行调试。以下是调度程序进程的几行输出。没有明显的问题,但我的任务没有执行,也没有为测试 DAG 生成任何日志来帮助我放大错误。问题出在这里吗?
Sep 28 18:39:30 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:30,965] {dag_processing.py:627} INFO - Started a process (PID: 21822) to generate tasks for /home/ubuntu/airflow/dags/scheduler_test_dag.py - logging into /home/ubuntu/airflow/logs/scheduler/2017-09-28/scheduler_test_dag.py.log
Sep 28 18:39:31 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:31,016] {jobs.py:1002} INFO - No tasks to send to the executor
Sep 28 18:39:31 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:31,020] {jobs.py:1440} INFO - Heartbeating the executor
Sep 28 18:39:32 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:32,022] {jobs.py:1404} INFO - Heartbeating the process manager
Sep 28 18:39:32 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:32,023] {jobs.py:1440} INFO - Heartbeating the executor
Sep 28 18:39:33 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:33,024] {jobs.py:1404} INFO - Heartbeating the process manager
Sep 28 18:39:33 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:33,025] {dag_processing.py:559} INFO - Processor for /home/ubuntu/airflow/dags/capone_dash_dag.py finished
Sep 28 18:39:33 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:33,026] {dag_processing.py:559} INFO - Processor for /home/ubuntu/airflow/dags/scheduler_test_dag.py finished
当我手动运行 airflow scheduler
时,一切正常。由于我的测试 DAG 的开始日期是 9 月 9 日,从那以后它每分钟都在回填,生成一个运行时间代码。但是,当我使用 systemd
将调度程序作为守护程序运行时,它完全安静,没有明显的错误源。
有什么想法吗?
最佳答案
文档可能已过时?
我通常按如下方式启动 Airflow
airflow kerberos -D
airflow scheduler -D
airflow webserver -D
这是 airflow webeserver --help
输出(来自版本 1.8):
-D, --daemon Daemonize instead of running in the foreground
注意那里不可能有 bool 标志。必须修复文档。
airflow scheduler -D
失败时的快速说明:
这包括在评论中,但在这里似乎值得一提。当您运行 Airflow 调度程序时,它将创建文件 $AIRFLOW_HOME/airflow-scheduler.pid
。如果您尝试重新运行 Airflow 调度程序守护进程,这几乎肯定会生成文件 $AIRFLOW_HOME/airflow-scheduler.err
它将告诉您 lockfile.AlreadyLocked:/home/ubuntu/airflow/airflow-scheduler.pid 已被锁定
。如果您的调度程序守护程序确实无法使用并且您发现自己需要重新启动,请执行以下命令:
sudo rm $AIRFLOW_HOME airflow-scheduler.err airflow-scheduler.pid
airflow scheduler -D
这让我的日程安排回到正轨。
关于python - 作为守护进程运行 Airflow 调度程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46476246/
在Airflow中,我一直在使用“airflow run”和“airflow test”,但不完全理解它们有何不同。他们有什么区别? 最佳答案 我自己通读了文档,发现它是多么令人困惑。 Airflow
我使用 Airflow 已经有一段时间了,它是由一位同事创建的。最近我遇到了一些错误,这需要我更深入地了解如何修复 Airflow 中的某些问题。 我确实理解这三个进程是什么,但我只是不明白运行它们时
AIRFLOW_HOME=/path/to/my/airflow_home 我收到这个警告... >airflow trigger_dag python_dag3 /Users/alexryan/mi
有没有人报告过他们在他们的公司中让 Airflow 扩展了多少?我正在考虑实现 Airflow 来执行 5,000 多个任务,每个任务每小时运行一次,有一天可以将其扩展到 20,000 多个任务。在检
问题 :我想使用 Github 上最新版本的 Apache-Airflow 安装 apache-airflow 以及所有依赖项? 我怎样才能使用 pip 做到这一点? 在生产环境中使用它是否安全? 最
我们在 AWS ECS 上运行 Airflow,并将所有 DAG 捆绑在一个 Docker 镜像中。我们不时更新 DAGS,并部署新版本的 Docker Image。当我们这样做时,ECS 将终止正在
问题很简单。我需要限制 Airflow 网络用户仅查看和执行某些 DAG 和任务。 如果可能,我宁愿不使用 Kerberos也不是 OAuth . Multi-tenancy option 似乎是一个
我们正在使用 Airflow 2.00。我正在尝试实现一个做两件事的 DAG: 通过 API 触发报告 从源到目标下载报告。 任务 1 和任务 2 之间至少需要 2-3 小时的间隔。根据我的研究,我有
对于一项任务,有许多辅助任务 - 从文件/数据库中获取/保存属性、验证、审计。这些辅助方法并不耗时。 一个示例 DAG 流, fetch_data >> actual_processing >> va
有什么方法可以重新加载作业而不必重新启动服务器吗? 最佳答案 在airflow.cfg中,您具有以下两种配置来控制此行为: # after how much time a new DAGs shoul
我们可以通过将任务/dag 超时设置为 None 并手动触发其运行来使用 Airflow dag 来定义永无止境的作业(即具有无条件循环以消耗流数据的任务)吗?让 Airflow 监测永无止境的任务会
我是 Airflow 的新手,最近开始探索这个工具。我在 18.4 版本的 ubuntu 机器上安装了 1.10.10 版。从设置和安装的角度来看,一切正常,但是我在任何 DAG 中的任务都没有运行,
我主要看到Airflow被用于ETL / Bid数据相关的工作。我正在尝试将其用于业务工作流,其中用户操作将来会触发一组相关任务。其中某些任务可能需要根据某些其他用户操作来清除(删除)。 我认为最好的
我有一个 DAG,只要 FileSensor 检测到文件,它就会使用它,为每个文件生成任务,以 (1) 将文件移动到暂存区域,(2) 触发单独的 DAG 来处理文件。 FileSensor -> Mo
我需要手动或以编程方式执行的管道,可以使用 Airflow 吗?看起来现在每个工作流程都必须与时间表绑定(bind)。 最佳答案 只需在创建 DAG 时将 schedule_interval 设置为
所以这是一个愚蠢的想法...... 我在 Airflow 中创建了(许多)DAG...并且它有效...但是,我想以某种方式将其打包,以便我可以在不安装 Airflow 的情况下运行单个 DAG 运行;
我使用“pip install 'apache-airflow[statsd]' 安装了 airflow[statsd] 并安装了 statsd_exporter。现在我可以看到来自 Promethe
我们正在尝试将 MongoHook 和 GCSToLocalFilesystemOperator 导入到我们的 Airflow 项目中: docs for MongoHook docs for GCS
启动 Airflow 网络服务器时出现以下错误 balajee@Balajees-MacBook-Air.local:~$ Airflow 网络服务器 -p 8080 [2018-12-03 00:2
运行pip install airflow[postgres]命令后出现以下错误: > raise RuntimeError("By default one of Airflow's dependen
我是一名优秀的程序员,十分优秀!