Может сбой повторной попытки задачи DAG Airflow с измененным параметром

Да, это нормальное поведение. Вы в основном читаете в конце файла в первый раз (вы можете сортировать его как чтение ленты), поэтому вы не можете читать больше, если вы не сбросите его, либо используя f.seek(0), чтобы переместить на начало файла или закрыть его, а затем снова открыть его, который начнется с начала файла.

Если вы предпочитаете, вместо этого вы можете использовать синтаксис with, который автоматически закроет файл для вы

, например,

with open('baby1990.html', 'rU') as f:
  for line in f:
     print line

после завершения этого блока, файл автоматически закрыт для вас, поэтому вы можете выполнять этот блок несколько раз, не закрывая явным образом файл самостоятельно и прочитайте этот файл снова.

0
задан Brad Fallon 16 January 2019 в 19:02
поделиться

1 ответ

Прежде всего: это отличный вопрос, мне интересно, почему он до сих пор не обсуждался широко


Я могу вспомнить два возможных подхода

[ 1132]
  • Фьюзинг Operators : Как указано в @Kris , Объединение Operators вместе появляется быть наиболее очевидным обходным путем

  • Отдельный Верхний уровень DAG с : Читать ниже


    1. Подход с использованием отдельных групп DAG верхнего уровня

      Учитывая

      • Скажем, у вас есть задачи A & amp; B
      • A является восходящим по отношению к B
      • Вы хотите возобновить выполнение (повторить попытку) с A, если B не удается

      (Возможно) Идея : Если вы чувствуете себя предприимчивым

      • Поставьте задачи A & amp; B в отдельных верхних уровнях DAG с, скажем, DAG-A & amp; DAG-B
      • В конце DAG-A запустите DAG-B, используя TriggerDagRunOperator
        • По всей вероятности, вам также придется использовать ExternalTaskSensor после TriggerDagRunOperator [ 1155]
      • В DAG-B поставьте BranchPythonOperator после Задачи-B с trigger_rule=all_done
      • Этот BranchPythonOperator должен перейти в другой TriggerDagRunOperator, который затем вызывает DAG-A (снова!)

      Полезные ссылки


      EDIT-1

      Вот гораздо более простой способ, который может обеспечить подобное поведение

      Как можно перезапустить задачу вверх по течению, если задача потока ниже не выполняется в Airflow (с использованием вспомогательных пакетов)

    0
    ответ дан y2k-shubham 16 January 2019 в 19:02
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: