我正在使用SSH操作员运行气流任务。我很确定python程序没有错误,并且在我运行它时成功运行。但是,当从气流运行到程序执行结束时,我将遇到SIGTERM错误。
我试图通过研究各种解决方案来弄清楚,但没有任何效果。我尝试增加 从airflow.cfg文件中的60中 killed_task_cleanup_time = 1200 。还尝试在airflow.cfg中将 hostname_callable更改为socket:gethostname ,因为在此错误之前我收到以下警告
Warning: The recorded hostname xxx does not match this instance's hostname
Error:
[2020-10-15 10:45:34,937] {taskinstance.py:954} ERROR - Received SIGTERM. Terminating subprocesses.
[2020-10-15 10:45:34,959] {taskinstance.py:1145} ERROR - SSH operator error: Task received SIGTERM signal
Traceback (most recent call last):
File "/opt/anaconda3/lib/python3.7/site-packages/airflow/contrib/operators/ssh_operator.py", line 137, in execute
readq, _, _ = select([channel], [], [], self.timeout)
File "/opt/anaconda3/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 956, in signal_handler
raise AirflowException("Task received SIGTERM signal")
airflow.exceptions.AirflowException: Task received SIGTERM signal
任何想法和建议都是有益的。坚持了一天
答案 0 :(得分:0)
此问题是由以下事实触发的:RECORDED主机名XXX映射的IP地址与实例的主机名映射的IP地址不同,从而引发SIGTERM错误。因此,您需要为记录的主机名XXX指定IP映射。
答案 1 :(得分:0)
这个帖子可能有帮助吗? https://issues.apache.org/jira/browse/AIRFLOW-966。
您使用的是哪个版本的气流,您是否检查了 celery 代理设置? 解决方案似乎是将可见性超时设置为高于 celery 默认值(1 小时),以防止 celery 重新提交作业。我相信这只会影响通过手动运行/CLI 创建的任务(通常不是计划任务。)