web-dev-qa-db-fra.com

fuseau horaire par défaut d'apache-airflow 1.9 défini sur non utc

J'avais récemment mis à niveau la version airflow d'Airflow 1.8 vers Apache-airflow 1.9, la mise à niveau a réussi et j'ai mis à l'échelle l'environnement à l'aide de Celery Executor, tout semblait bien fonctionner mais les dates de début des dates et des tâches, les dates d'exécution, etc. apparaissent toutes dans Le fuseau horaire UTC et les dags planifiés s'exécutent en UTC, plus tôt avant la mise à niveau qu'ils exécutaient dans le fuseau horaire local qui est pdt.

Des idées sur la façon de faire de pdt le fuseau horaire par défaut dans le flux d'air?

J'ai essayé d'utiliser default_timezone dans le airflow.cfg à default_timezone = pdt mais même après avoir redémarré tous les services, il planifie les retards et les tâches en UTC. Dans l'attente de votre aide pour fixer le fuseau horaire par défaut à pdt.

10
Amit Kumar

Airflow fonctionnant dans le fuseau horaire local avant la version 1.9.0 n'était pas intentionnel et n'était qu'un effet secondaire du code Airflow utilisant datetime.now() et datetime.today() au lieu de datetime.utcnow(). Cela a été corrigé dans 1.9.0 sous AIRFLOW-289 , ce qui rend les choses indépendantes du fuseau horaire (toujours UTC) comme vous l'avez observé.

La prise en charge officielle d'Airflow pour connaître le fuseau horaire est fusionnée dans la branche principale. Ce travail a été réalisé dans le cadre de AIRFLOW-288 et n'est pas disponible dans la dernière version stable (1.9.0). Vous pouvez probablement vous y attendre dans la prochaine version majeure.

Une fois que vous avez ce changement, la réponse de Matt devrait vous fournir ce que vous cherchez.

11
Daniel Huang

Selon ces documents , le default_timezone accepte un identifiant de fuseau horaire pour la base de données IANA TZ. Ils sont listés ici.

Si vous souhaitez l'heure US Pacific, vous devez définir default_timezone=America/Los_Angeles.

4
Matt Johnson-Pint