google-cloud-composer - PythonOperator 任务挂起访问 Cloud Storage 并按 SCHEDULED 堆叠
问题描述
访问 Cloud Storage 时,我的 DAG 中的一项任务有时会挂起。似乎代码在download
此处的函数处停止:
hook = GoogleCloudStorageHook(google_cloud_storage_conn_id='google_cloud_default')
for input_file in hook.list(bucket, prefix=folder):
hook.download(bucket=bucket, object=input_file)
在我的测试中,该文件夹包含一个 20Mb 的 json 文件。
该任务通常需要 20-30 秒,但在某些情况下它会运行 5 分钟,然后其状态会更新SCHEDULED
并停留在那里(等待超过 6 小时)。我怀疑 5 分钟是由于配置原因,scheduler_zombie_task_threshold 300
但不确定。
如果我在 Web UI 上手动清除任务,该任务会快速排队并再次正确运行。我通过设置execution_timeout
正确更新任务FAILED
或UP_FOR_RETRY
状态超过 10 分钟来解决这个问题;但我想解决根本问题以避免依赖固定的超时阈值,有什么建议吗?
解决方案
Cloud Composer 讨论组对此进行了讨论:https ://groups.google.com/d/msg/cloud-composer-discuss/alnKzMjEj8Q/0lbp3bTlAgAJ 。当 Airflow 工作人员死亡时,Celery 执行器会出现问题。
尽管 Composer 正在着手修复,但如果您希望在当前版本中减少这种情况发生的频率,您可以考虑减少并行度 Airflow 配置或创建具有更大机器类型的新环境。
推荐阅读
- javascript - Javascript 密码反馈
- python - 如何根据空格数拆分数据框中的字符串
- javascript - 在 JS React 中,本地 img 不通过数组导入
- c++ - c++ 将指针推入指针优先级队列会导致立即 valgrind 错误
- r - 如何在 Debian 中安装 poppler 0.73.0 和 pdftools?
- sql - SQL 如何根据某些条件生成约会时间表?
- python - 保存时 Python PIL 边框为 16x16 图像
- excel - 检查命名范围是否等于另一个命名范围
- java - 保持循环直到正确的输入
- typescript - 如何分支字符串类型和文字类型?