代码之家  ›  专栏  ›  技术社区  ›  Kyle Bridenstine

气流1.10配置核心主机名\u可调用-如何设置?

  •  1
  • Kyle Bridenstine  · 技术社区  · 6 年前

    我向我的家人问好 previous Stackoverflow post here 我终于从气流版本1.9升级到1.10,因为它是现在 released on PyPi . 使用 their release guide here 我的空气流量是1.10。现在我检查了他们的udpates到1.10,看看他们是如何解决的 the bug discovered in Airflow version 1.9 在AWS EC2实例上运行时。我发现他们用对这个新类函数的调用替换了所有获得服务器IP地址的函数 get_hostname https://github.com/apache/incubator-airflow/blob/master/airflow/utils/net.py . 现在,在这个小函数中,你可以看到这样的注释:,

    套接字.getfqdn作为退路。

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

    这告诉我们 airflow.cfg 在剖面下 [core] 有一个名为 hostname_callable 现在我们可以设置如何获取服务器的IP地址。因此,他们对Airflow 1.9版中出现的错误的修复方法是,如果需要更改IP地址,就让我们选择如何获取IP地址。此处显示了新配置字段的默认值 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(套接字.gethostname()) 使用冒号的配置风格 : socket.getfqdn() 在配置文件中写入 socket:gethostbyname(socket.gethostname()) ?

    1 回复  |  直到 6 年前
        1
  •  9
  •   joebeeson    6 年前

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

    基本上,在 气流\u本地\u设置 :

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

    然后安装 气流\u本地\u设置

        2
  •  4
  •   Marcus Alsterman Holt    5 年前

    这不是一个直接的答案,但可能有助于某人面对这个或类似的问题。

    在macOS Catalina上使用本地气流时,我遇到了类似的问题。 local_task_job.py 崩溃的说

    录制的主机名mycustomhostname.local文件与此实例的主机名1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa不匹配

    hostname_callable = socket:getfqdn
    

    hostname_callable = socket:gethostname