С уважением к моему предыдущему сообщению Stackoverflow здесь Я наконец-то обновился с Airflow версии 1.9 до 1.10, поскольку теперь он выпущен на PyPi .Используя их руководство по выпуску здесь У меня работает Airflow 1.10.Теперь я проверил их обновления до 1.10, чтобы увидеть, как они исправили ошибку , обнаруженную в версии 1.9 Airflow при запуске на AWS EC2-Instance.И я обнаружил, что они заменили все функции, которые получили IP-адрес сервера, вызовом функции этого нового класса Airflow get_hostname
https://github.com/apache/incubator-airflow/blob/master/airflow/utils/net.py. Теперь внутри этой маленькой функции вы видите комментарий, который гласит:
Получите имя хоста, используя вызываемый из конфига или используя socket.getfqdn в качестве запасного варианта.
Итак, после этого комментария вы видите код,
callable_path = conf.get('core', 'hostname_callable')
Это говорит нам о том, что в airflow.cfg
в разделе [core]
есть новое поле значения ключа под названием hostname_callable
, которое теперь позволяет нам установить, как мы хотим получить IP-адрес сервера.Поэтому исправление ошибки, обнаруженной в версии 1.9 Airflow, состоит в том, чтобы просто позволить нам выбрать способ получения IP-адреса, если нам нужно его изменить.Их значение по умолчанию для этого нового поля конфигурации отображается здесь https://github.com/apache/incubator-airflow/blob/master/airflow/config_templates/default_airflow.cfg в разделе [core]
.Вы можете видеть, что им присвоено значение
[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())
(, опять же, об этом более подробно говорится в моем предыдущем посте )
Так что мой вопрос в том, какой синтаксис мне нужно использовать, чтобы получить socket.gethostbyname(socket.gethostname())
в стиле конфигурации использования двоеточий :
.Например, вызов функции socket.getfqdn()
записывается в файле конфигурации как socket:getfqdn
.Так что я не понимаю, как бы я написал этот синтаксис с вложенным вызовом.Буду ли я писать что-то вроде socket:gethostbyname(socket.gethostname())
?