qic*_*_he 5 python python-3.x airflow
我们已经使用 Airflow 一段时间了,它很棒。
现在我们正在考虑将一些非常频繁的任务也移到我们的气流服务器中。
假设我每秒运行一个脚本。
使用气流安排它的最佳做法是什么:
在每秒调度的 DAG 中运行此脚本。我非常怀疑这将是解决方案,DAGRUN 的开销很大
在 6 小时后停止的 while 循环中运行此脚本,然后在 Airflow 上安排它每 6 小时运行一次?
创建一个没有计划的 DAG,将任务置于具有适当睡眠时间的 while True 循环中,因此除非出现错误,否则任务永远不会终止。
还有其他建议吗?
或者这种任务不适合Airflow?应该用 lambda 函数和 AWS 调度程序来做吗?
干杯!
安排它的最佳做法是什么
- ...这种任务不适合Airflow?
这是不合适的。
特别是,您的气流可能配置为每 5 秒重新检查 DAG 集,这听起来不太适合 1 秒任务。另外,调度开销与已执行工作的比率也不会有吸引力。我想你可以安排五个同时执行的任务,每分钟十二次,并让它们睡眠零到四秒,但这太疯狂了。并且您可能需要“锁定自己”以避免同时发生的同级任务互相干扰。
六小时的建议 (2.) 并不疯狂。我将把它视为一个六十分钟的每小时任务,因为管理费用是相似的。一小时后退出并让气流重新产生有几个好处。日志滚动定期发生。如果你的程序崩溃了,它很快就会重新启动。如果您的主机重新启动,您的程序不久也会重新启动。缺点是您的业务需求可能会将“超过一分钟”视为“太长”。在时间范围内协调重叠的任务或任务之间的间隙可能会带来一些问题。
您提出的需求与主管解决的问题完全匹配。就用那个吧。即使应用程序崩溃,即使主机崩溃,您也将始终运行事件循环的一份副本。日志滚动和其他管理细节已经得到解决。代码库已经成熟,很多人都在尝试并合并了他们的功能请求。它适合你想要的。
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |