You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过GitHub Action部署Azure Data Factory遇Python asyncio随机失败

解决Azure Data Factory自托管部署中随机出现的Python asyncio错误

问题核心

你遇到的AttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'是Python asyncio事件循环销毁时的竞态条件错误,本身属于非致命的清理错误,但因为azure/arm-deploy@v1设置了failOnStdErr: true,导致部署流程把stderr的错误输出判定为部署失败,从而出现随机50%的成功率。这个问题和publish_config.json或多环境分支无关,主要源于Azure CLI依赖的Python环境的已知bug。

解决方案

1. 临时规避:关闭failOnStdErr或过滤特定错误

修改GitHub Actions工作流中azure/arm-deploy步骤的参数:

  • 直接关闭failOnStdErr(注意:会忽略真正的部署错误,建议结合日志监控):
- name: Deploy ARM Template
  uses: azure/arm-deploy@v1
  with:
    resourceGroupName: ***
    template: ARMTemplateForFactory.json
    parameters: ARMTemplateParametersForFactory.json factoryName=*** 
    failOnStdErr: false
  • 或者通过脚本过滤掉特定的stderr错误(更安全):
- name: Deploy ARM Template
  run: |
    az deployment group create --resource-group *** --template-file ARMTemplateForFactory.json --parameters ARMTemplateParametersForFactory.json factoryName=*** 2>&1 | grep -v "AttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'"

2. 根本修复:升级Azure CLI到最新版本

这个asyncio的bug在较新的Azure CLI版本中已经被修复,在自托管运行器的前置步骤中添加Azure CLI升级命令:

# PowerShell环境
az upgrade --yes

或者在Linux运行器上用:

# Linux环境
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

3. 避免Python环境冲突

自托管运行器中同时存在hostedtoolcache的Python和Azure CLI自带的Python(/opt/az/lib/python3.10),可能导致环境变量冲突。建议:

  • 在部署步骤前,取消设置外部Python的环境变量:
env:
  pythonLocation: ""
  PKG_CONFIG_PATH: ""
  Python_ROOT_DIR: ""
  Python2_ROOT_DIR: ""
  Python3_ROOT_DIR: ""
  LD_LIBRARY_PATH: ""
  • 强制使用Azure CLI自带的Python环境执行部署。

4. 优化多环境部署配置(非当前错误直接原因,但建议完善)

虽然当前错误和publish_config.json无关,但多ADF环境共用同一配置文件可能引发其他问题,建议:

  • 为dev/qa/prod分别创建独立的发布分支(如release-dev、release-qa、release-prod)
  • 每个环境维护独立的publish_config.json,通过工作流参数动态切换

验证步骤

  1. 升级Azure CLI后,重新运行部署工作流,观察是否还出现该错误
  2. 若仍出现,调整failOnStdErr参数,确认部署是否能正常完成
  3. 检查多环境的配置文件是否独立,避免交叉影响

内容的提问来源于stack exchange,提问作者ar7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:13:18