调度程序和网络服务器正在不同的容器上运行,当我运行 DAG 并检查网络服务器上的日志时,它向我显示了这个特定错误。
*** Log file does not exist: /usr/local/airflow/logs/indexing/index_articles/2019-12-31T00:00:00+00:00/1.log
*** Fetching from: http://465e0f4a4332:8793/log/indexing/index_articles/2019-12-31T00:00:00+00:00/1.log
*** Failed to fetch log file from worker. HTTPConnectionPool(host='465e0f4a4332', port=8793): Max retries exceeded with url: /log/indexing/index_articles/2019-12-31T00:00:00+00:00/1.log (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f0a143700d0>: Failed to establish a new connection: [Errno 111] Connection refused'))
Run Code Online (Sandbox Code Playgroud)
我设置了另一个类似问题中提到的气流变量,我在 cfg 文件上更改的唯一变量是这些。
AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres:5432/airflow
AIRFLOW__CORE__LOAD_EXAMPLES=False
AIRFLOW__CORE__BASE_URL = http://{hostname}:8080
Run Code Online (Sandbox Code Playgroud)
我手动检查并正确生成了日志文件,我假设唯一的问题是无法通过网络服务器容器公开访问 url。我不确定我在哪里搞砸了,我正在本地运行和测试它。
这是我的代码:
@click.group()
@click.pass_context
@click.argument('CHALLENGE', type=int)
def challenge(ctx, challenge):
ctx.obj = Challenge(challenge=challenge)
@click.group(invoke_without_command=True, cls=PhaseGroup)
@click.pass_obj
@click.argument('PHASE', type=int)
def phase(ctx, phase):
# Something
challenge.add_command(phase)
Run Code Online (Sandbox Code Playgroud)
这些命令一起工作应该是这样的。
cli challenge 1 phase 1
Run Code Online (Sandbox Code Playgroud)
通过正确执行,它可以按预期工作。
但是当我使用 --help 或在阶段上定义任何其他标志时,它会抛出
cli challenge 1 phase 1 --help
It throws Error: Missing argument "PHASE".
Run Code Online (Sandbox Code Playgroud)
我搜索了 SOF,发现python click app 失败,并显示“缺少参数”,但无法找到问题这是一个有同样问题的用户,但我不太明白答案。
我不能将参数设置为可选,因为它是 CLI 工作的关键部分。