При успешном выполнении воздушного потока повторное выполнение одной задачи несколько раз

  1. Внедрить javax.servlet.Filter .
  2. В методе doFilter() введите входящий ServletRequest to HttpServletRequest .
  3. Используйте HttpServletRequest#getRequestURI() , чтобы захватить путь.
  4. Используйте прямое java.lang.String , такие как substring() , split() , concat() и т. д., чтобы извлечь часть интереса и составить новый путь.
  5. Используйте либо ServletRequest#getRequestDispatcher() , а затем RequestDispatcher#forward() , чтобы перенаправить запрос / ответ на новый URL-адрес (перенаправление на стороне сервера , не отражается в адресной строке браузера), или передайте входящий ServletResponse в HttpServletResponse , а затем HttpServletResponse#sendRedirect() , чтобы перенаправить ответ к новому URL-адресу (переадресация на стороне клиента, отображаемая в адресной строке браузера).
  6. Зарегистрируйте фильтр в web.xml на url-pattern в /* или /Check_License/*, в зависимости от пути контекста, или если вы уже на Servlet 3.0, используйте вместо него @WebFilter .
  7. Не забудьте добавить проверку кода, если для URL необходимо изменить , и если нет t , а затем просто вызовите FilterChain#doFilter() , иначе он будет вызывать себя в бесконечном цикле.

    В качестве альтернативы вы также можете просто использовать существующий сторонний API для выполнения вся работа для вас, такая как UrlRewriteFilter Tuckey , который можно настроить так же, как и с mod_rewrite Apache.

0
задан Javiar Sandra 19 February 2019 в 00:13
поделиться

1 ответ

Вы можете попробовать ниже реализацию, мы создаем 3 операции с помощью цикла for

from datetime import datetime

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

dag = DAG(
    "hello_world_0",
    description="Starting tutorial",
    schedule_interval=None,
    start_date=datetime(2019, 1, 1),
    catchup=False
)

chain_operators = []
max_attempt = 3
for attempt in range(max_attempt):
    data_pull = BashOperator(
        task_id='attempt_{}'.format(attempt),
        bash_command='echo "Hello World - {}!"'.format(attempt),
        dag=dag
    )
    chain_operators.append(data_pull)

data_validation = BashOperator(task_id='data_validation', bash_command='echo "Data Validation!"', dag=dag)
chain_operators.append(data_validation)

# Add downstream
for i,val in enumerate(chain_operators[:-1]):
    val.set_downstream(chain_operators[i+1])

Я изменил schedule_interval на None, потому что с '* * * * *' задание будет запускаться непрерывно

0
ответ дан Javiar Sandra 19 February 2019 в 00:13
поделиться