在 Windows 上安装 Edge Worker¶
注意
在 Windows 上使用 Edge Worker 尚处于实验阶段。Edge Worker 仅在 Windows 上进行过手动测试,其设置未在 CI 中验证。建议在 Linux 上使用 Edge Worker。基于 Windows 的设置仅供您自行承担风险进行测试。由于 Python 操作系统限制,它在技术上受到限制,目前仅具备概念验证 (Proof-of-Concept) 的质量。
该设置已在 Windows 10 系统、Python 3.12.8 版本 (64位) 上进行测试。要在 Windows 上设置 Edge Worker 实例,您需要按照以下步骤操作:
安装 Python 3.9 或更高版本。
创建一个空文件夹作为基础目录。在我们的示例中,它是
C:\\Airflow
。在
C:\\Airflow
中启动 Shell/命令行,并通过以下命令创建新的虚拟环境:python -m venv venv
通过以下命令激活虚拟环境:
venv\\Scripts\\activate.bat
使用与您的 Airflow 版本相符的 Airflow 约束安装 Edge 提供者,命令如下:
pip install apache-airflow-providers-edge3 --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.12.txt
。(或者, alternatively,构建 Edge 提供者的 wheel 文件并将其复制到文件夹C:\\Airflow
中。本文档使用的是apache_airflow_providers_edge-0.9.7rc0-py3-none-any.whl
,使用与您的 Airflow 和 Python 版本相符的 Airflow 约束安装 wheel 文件:pip install apache_airflow_providers_edge-0.9.7rc0-py3-none-any.whl apache-airflow==2.10.5 virtualenv --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.12.txt
)在
C:\\Airflow
中创建一个新文件夹dags
,并将相关的 DAG 文件复制到其中。(至少包括应在 Edge 上执行的 DAG 文件及其依赖项。为了测试,可以使用apache-airflow
仓库中的 DAG 文件,位于 <https://github.com/apache/airflow/tree/main/providers/edge3/src/airflow/providers/edge3/example_dags>。)从正在运行的 Airflow 后端收集所需参数,至少包括以下内容:
edge
/api_url
:Edge Worker 连接的 HTTP(s) 端点
core
/internal_api_secret_key
:Web 服务器和 Edge Worker 之间的共享密钥如果您环境中适用,请提供任何代理详情。
创建一个 worker 启动脚本,以避免重复输入。在
C:\\Airflow
中创建一个新文件start_worker.bat
,内容如下 - 请替换为您的设置
@echo off
set AIRFLOW__CORE__DAGS_FOLDER=dags
set AIRFLOW__LOGGING__BASE_LOG_FOLDER=edge_logs
set AIRFLOW__EDGE__API_URL=https://your-hostname-and-port/edge_worker/v1/rpcapi
set AIRFLOW__CORE__EXECUTOR=airflow.providers.edge3.executors.edge_executor.EdgeExecutor
set AIRFLOW__CORE__INTERNAL_API_SECRET_KEY=<steal this from your deployment...>
set AIRFLOW__CORE__LOAD_EXAMPLES=False
set AIRFLOW_ENABLE_AIP_44=true
@REM Add if needed: set http_proxy=http://my-company-proxy.com:3128
@REM Add if needed: set https_proxy=http://my-company-proxy.com:3128
airflow edge worker --concurrency 4 --queues windows
日志注意事项:默认情况下,DAG 运行 ID 被用作日志结构中的路径,并且运行 ID 默认包含日期和时间。Windows 文件或文件夹名称中不允许包含冒号 (“:”),Edge Worker 也会因此失败。因此,您可能需要考虑修改配置
AIRFLOW__LOGGING__LOG_FILENAME_TEMPLATE
以避免使用冒号。例如,您可以添加 Jinja2 模板替换| replace(":", "-")
来使用其他字符。请注意,日志文件名模板是在服务端解析的,而不是在工作进程端解析的。因此,您需要将其作为全局更改进行设置。或者,仅出于测试目的,您必须使用不包含冒号的运行 ID,例如在启动 DAG 运行时手动设置运行 ID。通过以下命令启动 worker:
start_worker.bat
。观察控制台是否有错误。运行一个 DAG 进行测试,并查看结果是否符合预期。