Я столкнулся с неожиданной проблемой при конкатенации строк в Airflow 2.7.2 с использованием Python 3.11.5.
Эта проблема возникает только в Airflow; та же самая конкатенация строк работает правильно в локальных модульных тестах.
Вот фрагмент кода, демонстрирующий проблему:
Непонятно, почемуvalues_str_3 выдает такой результат. Я пробовал распечатать его как с помощью
print(values_str_3), так и с помощью logging.info(values_str_3), но он по-прежнему работает неправильно.
Интересно, что когда я разделил объединенную строку , результат правильный:
Все выглядит нормально.
Почемуvalues_str_3 выдает неверный результат в Airflow, а не локально? Любое понимание этого вопроса будет оценено по достоинству. Спасибо!
Я столкнулся с неожиданной проблемой при конкатенации строк в Airflow 2.7.2 с использованием Python 3.11.5. Эта проблема возникает только в Airflow; та же самая конкатенация строк работает правильно в локальных модульных тестах. Вот фрагмент кода, демонстрирующий проблему: [code]values_str_list = ['1234', '5678', "'ABC_123'", "'xyz-calc'", "'2024-01-01'", 'NULL', "'9876'", 'NULL', "'example'", '42', "'2024-07-28T01:23:45.678'", "'2024-07-28T02:34:56.789'", "'2024-07-28T03:45:67.890'", "'user_test'", "'complete'", "'2024-07-28T04:56:78.901'", "'2024-07-28T05:67:89.012'", 'NULL', "'spark-calc-1234-driver'", 'NULL', 'NULL', "'XYZ'"]
values_str_list = [] for value in values: if isinstance(value, int): values_str_list.append(str(value)) elif value == 'NULL': values_str_list.append('NULL') else: values_str_list.append(f"'{value}'")
values_str = ','.join(values_str_list) # This concatenation works correctly print("Concatenated string values_str:") print(values_str)
values_str_2 = ', '.join(values_str_list) # This concatenation works correctly print("Concatenated string values_str_2:") print(values_str_2)
values_str_3 = ',\n '.join(values_str_list) # This concatenation does NOT work correctly print("Concatenated string values_str_3:") print(values_str_3) logging.info("Concatenated string values_str_3:") logging.info(values_str_3) [/code] В журналах показано: [code][2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - Concatenated string values_str: [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - 1234,5678,'ABC_123','xyz-calc','2024-01-01',NULL,'9876',NULL,'example',42,'2024-07-28T01:23:45.678','2024-07-28T02:34:56.789','2024-07-28T03:45:67.890','user_test','complete','2024-07-28T04:56:78.901','2024-07-28T05:67:89.012',NULL,'spark-calc-1234-driver',NULL,NULL,'XYZ' [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - Concatenated string values_str_2: [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - 1234, 5678, 'ABC_123', 'xyz-calc', '2024-01-01', NULL, '9876', NULL, 'example', 42, '2024-07-28T01:23:45.678', '2024-07-28T02:34:56.789', '2024-07-28T03:45:67.890', 'user_test', 'complete', '2024-07-28T04:56:78.901', '2024-07-28T05:67:89.012', NULL, 'spark-calc-1234-driver', NULL, NULL, 'XYZ' [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - Concatenated string values_str_3: [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - 1234, 5678, 'ABC_123', 'xyz-calc', '2024-01-01', NULL, '9876', NULL, 'example', 42, '2024-07-28T01:23:45.678', '2024-07-28T02:34:56.789', '2024-07-28T03:45:67.890', 'user_test', 'complete', '2024-07-28T04:56:78.901', '2024-07-28T05:67:89.012', NULL, 'spark-calc-1234-driver', NULL, 'XYZ' [2024-07-29, 22:12:39 UTC] {2044_16_subscription.py:471} INFO - Concatenated string values_str_3: [2024-07-29, 22:12:39 UTC] {2044_16_subscription.py:472} INFO - 1234, 5678, 'ABC_123', 'xyz-calc', '2024-01-01', NULL, '9876', NULL, 'example', 42, '2024-07-28T01:23:45.678', '2024-07-28T02:34:56.789', '2024-07-28T03:45:67.890', 'user_test', 'complete', '2024-07-28T04:56:78.901', '2024-07-28T05:67:89.012', NULL, 'spark-calc-1234-driver', NULL, 'XYZ' [/code] Непонятно, почемуvalues_str_3 выдает такой результат. Я пробовал распечатать его как с помощью print(values_str_3), так и с помощью logging.info(values_str_3), но он по-прежнему работает неправильно. Интересно, что когда я разделил объединенную строку , результат правильный: [code]print("Original string values_str:", values_str.split(',')) print("Original string values_str_2:", values_str_2.split(', ')) print("Original string values_str_3:", values_str_3.split(',\n ')) [/code] В журналах показано: [code][2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - Original string values_str: ['1234', '5678', "'ABC_123'", "'xyz-calc'", "'2024-01-01'", 'NULL', "'9876'", 'NULL', "'example'", '42', "'2024-07-28T01:23:45.678'", "'2024-07-28T02:34:56.789'", "'2024-07-28T03:45:67.890'", "'user_test'", "'complete'", "'2024-07-28T04:56:78.901'", "'2024-07-28T05:67:89.012'", 'NULL', "'spark-calc-1234-driver'", 'NULL', 'NULL', "'XYZ'"] [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - Original string values_str_2: ['1234', '5678', "'ABC_123'", "'xyz-calc'", "'2024-01-01'", 'NULL', "'9876'", 'NULL', "'example'", '42', "'2024-07-28T01:23:45.678'", "'2024-07-28T02:34:56.789'", "'2024-07-28T03:45:67.890'", "'user_test'", "'complete'", "'2024-07-28T04:56:78.901'", "'2024-07-28T05:67:89.012'", 'NULL', "'spark-calc-1234-driver'", 'NULL', 'NULL', "'XYZ'"] [2024-07-29, 22:12:39 UTC] {logging_mixin.py:151} INFO - Original string values_str_3: ['1234', '5678', "'ABC_123'", "'xyz-calc'", "'2024-01-01'", 'NULL', "'9876'", 'NULL', "'example'", '42', "'2024-07-28T01:23:45.678'", "'2024-07-28T02:34:56.789'", "'2024-07-28T03:45:67.890'", "'user_test'", "'complete'", "'2024-07-28T04:56:78.901'", "'2024-07-28T05:67:89.012'", 'NULL', "'spark-calc-1234-driver'", 'NULL', 'NULL', "'XYZ'"] [/code] Все выглядит нормально. Почемуvalues_str_3 выдает неверный результат в Airflow, а не локально? Любое понимание этого вопроса будет оценено по достоинству. Спасибо!
Я столкнулся с неожиданной проблемой при конкатенации строк в Airflow 2.7.2 с использованием Python 3.11.5.
Эта проблема возникает только в Airflow; та же самая конкатенация строк работает правильно в локальных модульных тестах.
Вот фрагмент кода,...
Предположим, у меня есть список/кортеж строк
COLOURS =
for c in COLOURS:
# rest of the code
Иногда я забываю поставить запятую после каждой записи в списке ( Red в приведенном выше фрагменте). В результате получается один RedGreen вместо двух...
Я работаю на мультитенантной платформе конвейера данных. Итак, на данный момент у нас около 5 арендаторов. В качестве инструмента оркестрации мы используем AWS MWAA
(Apache Airflow). Каждый арендатор имеет отдельный DAG и запускается...
Я работаю на мультитенантной платформе конвейера данных. Итак, на данный момент у нас около 5 арендаторов. В качестве инструмента оркестрации мы используем AWS MWAA
(Apache Airflow). Каждый арендатор имеет отдельный DAG и запускается...
Хотелось бы задать вопрос по Airflow, в настоящее время, когда мы устанавливаем аргументы DAG по умолчанию на повторную попытку 5 раз,
в случае сбоя
default_args = {
'owner': 'testing',
'retries': 5,
'retry_delay': timedelta(minutes=1)
}