首页 文章

Airflow 1.10配置核心hostname_callable - 如何设置?

提问于
浏览
0

我问我的previous Stackoverflow post here我've finally upgraded from Airflow version 1.9 to 1.10 since it'现在released on PyPi . 使用their release guide here我使Airflow 1.10正常工作 . 现在,我检查了他们的udpates为1.10,看看他们在AWS EC2-Instance上运行时如何处理the bug discovered in Airflow version 1.9 . 我发现他们通过调用这个新的Airflow类的函数 get_hostname https://github.com/apache/incubator-airflow/blob/master/airflow/utils/net.py来替换所有获得服务器IP地址的函数 . 现在,在那个小功能里面你会看到评论说,

使用config中的callable或使用socket.getfqdn作为回退来获取主机名 .

那么在那个评论之后你会看到代码,

callable_path = conf.get('core', 'hostname_callable')

这告诉我们在 airflow.cfg[core] 部分下面有一个名为 hostname_callable 的新键值字段,它现在让我们设置我们想要获取服务器IP地址的方式 . 因此,他们对Airflow 1.9版本中出现的错误的解决方法是让我们选择如何获取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-Instance上运行时发生错误 . 我需要它使用 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()) 的东西吗?

1 回答

  • 1

    如果是我,我会创建一个带有 hostname_callable 函数的 airflow_local_settings 模块,该函数返回必要的值 . From the code it looks like you could将值设置为 airflow_local_settings:hostname_callable .

    基本上,在 airflow_local_settings

    import socket
    
    def hostname_callable():
      return socket.gethostbyname(socket.gethostname())
    

    然后像安装任何其他模块一样将 airflow_local_settings 模块安装到计算机上 .

相关问题