2017-06-26 4 views
0

Je suis actuellement confronté à un problème où mon travailleur Celery se bloque de temps en temps et doit être redémarré. J'ai une instance de Airflow à partir de laquelle je voudrais configurer et planifier un redémarrage en utilisant le BashOperator ou SSHOperator, mais je ne suis pas sûr de savoir comment procéder, car il est dans un conteneur Docker. Depuis le localhost je voudrais juste "docker restart worker", mais puisque Bash fonctionne à l'intérieur du conteneur airflow, je dois trouver un moyen de redémarrer via le flux d'air CLI ou SSH du conteneur à l'hôte, ce qui sonne terrible. Y a-t-il une manière élégante d'aborder ceci? Je vois que Flower a une API REST à partir de laquelle je peux redémarrer le pool, mais je dois avoir activé cela dans ma config de céleri. Il ressemble déjà à airflow is setting the config, est-il possible de surcharger cela?Comment faire pour redémarrer un ouvrier céleri dans le flux d'air

Répondre

0

D'accord, voilà ce que je fini par faire:

t1 = BashOperator(
    task_id="celery_restart", 
    bash_command="celery multi restart 1", 
    dag=dag 
) 

n'a pas vraiment arrêter mes tâches de pendaison, mais il est :).