Для справки, я просто столкнулся с той же проблемой в Linux и, черт возьми, понял ее. В конце концов я определил, что у меня есть каталог ~ / .android, который был владельцем root (благодаря запуску adb как root, а при попытке выяснить другие проблемы с подключением). Удаление этого корневого каталога ~ / .android разрешило отсутствующий диалог авторизации в следующий раз, когда я снова подключился к устройству.
Возможно, что простое изменение владельца также устранило проблему - я предполагаю, что это было просто Отсутствие доступа к файлу ключа adb, хранящемуся внутри, является корнем проблемы. Тем не менее, я не проверял это, и я не собираюсь намеренно ломать свои жесткие возможности подключения, чтобы я мог проверить; -)
Вы можете добавить TimeDeltaSensor
с интервалом времени 5 минут между Task1
и Task2
.
Указанное поведение может быть достигнуто путем введения задачи, которая вызывает задержку указанной длительности между вашими Task 1
и Task 2
Это может быть достигнуто с помощью PythonOperator
[ 1125]
import time
from airflow.operators.python_operator import PythonOperator
delay_python_task: PythonOperator = PythonOperator(task_id="delay_python_task",
dag=my_dag,
python_callable=lambda: time.sleep(300))
task_1 >> delay_python_task >> task_2
Или с использованием BashOperator
, а также
from airflow.operators.bash_operator import BashOperator
delay_bash_task: BashOperator = BashOperator(task_id="delay_bash_task",
dag=my_dag,
bash_command="sleep 5m")
task_1 >> delay_bash_task >> task_2
Примечание. Указанные фрагменты кода НЕ проверяются [ 1133]
<час>Ссылки
example_python_operator.py
example_bash_operator.py
[1128] ОБНОВЛЕНИЕ-1
Вот некоторые другие способы введения задержки
on_success_callback
/ [ 1130] on_failure_callback
: В зависимости от того, должен ли Task 2
выполняться при успехе или неудаче Task 1
, вы можете передать lambda: time.sleep(300)
в любой из этих параметров Task 1
post_execute()
: вызов time.sleep(300)
в post_execute()
[1131] или pre_execute()
[1132] Task 1
также будет иметь тот же эффект. Конечно, это будет включать изменение кода для вашего tasks
(1 или 2), поэтому лучше избегать его Лично я предпочел бы подход extra task
, потому что он делает вещи более явный и не преувеличивает время выполнения ваших Task 1
или Task 2