Азкабан: условные казни в рабочем процессе
У меня есть требование ввести условное выполнение в мой рабочий процесс. Например: если выполняется определенное условие, то должен выполняться определенный рабочий процесс. Если нет, другой рабочий процесс должен быть выполнен.
Насколько я понимаю, в Azkkaban нет прямой функции, поддерживающей это. Только Узи это поддерживает. Хотите знать, как пользователи Azkkaban справляются с этим? Я уверен, что каждый должен столкнуться с этим в той или иной форме.
Спасибо, Кранти
3 ответа
FWIW, мы делаем это в наших проектах Azkaban, проверяя условие в сценарии оболочки. Затем сценарий использует API Azkaban для запуска другого рабочего процесса, если выполняется условие.
#!/bin/bash
# check some condition
check=`…`;
if [ ! -z "$check" ]; then
# Authenticate ourselves to Azkaban, capturing the session id
auth=`curl -k -X POST --data "action=login&username=my_user&password=my_password" https://localhost:8443 | jq '.["session.id"]' | sed -e 's/\"//g'`;
# Run the workflow using the Auth session id, capturing the response
run=`curl -k --get --data "session.id=$auth" --data 'ajax=executeFlow' --data 'project=my_project' --data "flow=my_flow" https://localhost:8443/executor | jq '.message'`;
# If $run response does not contain "successfully" it failed
if [[ $run = *successfully* ]]; then
echo "'$3': RUN STARTED";
else
echo "'$3': RUN ERROR";
exit 1;
fi;
else …
Вы должны знать, что запущенный рабочий процесс выполняется в своем собственном исполнении.
Дорожная карта Azkaban гласит, что эта функция есть только в их будущей дорожной карте, и, следовательно, ее нельзя так легко настроить. Единственный оставленный вариант - обрабатывать это программно.
Если у кого-то есть лучшие предложения, пожалуйста, дайте мне знать.
спасибо, Кранти
Вы можете использовать плагин триггера в Azkaban, чтобы сделать это. Вот пример простого примера, который я придумал: https://gist.github.com/feliperazeek/faae2fed6aef780442a4.
Вы можете реализовать свою собственную реализацию Условий.