【发布时间】:2019-11-30 01:04:37
【问题描述】:
感谢我的 previous Stackoverflow post here,我终于从 Airflow 版本 1.9 升级到了 1.10,因为它现在是 released on PyPi。使用 their release guide here 我让 Airflow 1.10 正常工作。现在我检查了他们对 1.10 的更新,看看他们在 AWS EC2-Instance 上运行时如何处理the bug discovered in Airflow version 1.9。我发现他们用调用这个新 Airflow 类的函数get_hostnamehttps://github.com/apache/incubator-airflow/blob/master/airflow/utils/net.py 替换了所有获取服务器 IP 地址的函数。现在,在那个小函数中,你会看到这样的注释,
使用配置中的可调用对象或使用获取主机名 socket.getfqdn 作为后备。
那么在那条评论之后你会看到代码,
callable_path = conf.get('core', 'hostname_callable')
这告诉我们在[core] 部分下的airflow.cfg 中有一个名为hostname_callable 的新键值字段,现在可以让我们设置获取服务器IP 地址的方式。因此,他们对 Airflow 1.9 版中出现的错误的修复是让我们在需要更改 IP 地址时选择如何获取 IP 地址。这个新配置字段的默认值在[core] 部分下的https://github.com/apache/incubator-airflow/blob/master/airflow/config_templates/default_airflow.cfg 中看到。您可以看到他们将其设置为,
[core]
# Hostname by providing a path to a callable, which will resolve the hostname
hostname_callable = socket:getfqdn
所以他们正在使用函数调用socket:getfqdn,这会导致在 AWS EC2 实例上运行时出现错误。我需要它来使用socket.gethostbyname(socket.gethostname()) (again this is mentioned in more detail on my previous post)
所以我的问题是我需要使用什么语法才能在使用冒号: 的配置样式中获得socket.gethostbyname(socket.gethostname())。例如函数调用socket.getfqdn()在配置文件中写为socket:getfqdn。所以我不知道如何使用嵌套调用编写该语法。我会写socket:gethostbyname(socket.gethostname())之类的东西吗?
【问题讨论】:
标签: airflow