Moje DAGy Airflow składają się głównie z PythonOperators i chciałbym użyć moich narzędzi debugowania Python IDE do rozwijania "wewnętrznego" przepływu powietrza w Pythonie. - Polegam na złączach bazy danych Airflow, które moim zdaniem byłoby brzydkie, gdybyśmy „wyłączyli” przepływ powietrza w celu rozwoju.
Używam Airflow od jakiegoś czasu i do tej pory rozwijałem i debugowałem tylko przez CLI. Co zaczyna być męczące.
Czy ktoś zna fajny sposób na skonfigurowanie PyCharm lub innego IDE, które umożliwia mi korzystanie z zestawu narzędzi do debugowania IDE podczas uruchamiania airflow test ..
?
3 odpowiedzi
To może być trochę hack, ale znalazłem jeden sposób na skonfigurowanie PyCharm:
- Użyj
which airflow
do lokalnego środowiska przepływu powietrza - co w moim przypadku jest tylko pipenv - Dodaj nową konfigurację przebiegu w PyCharm
- Ustaw „ścieżkę skryptu” języka Python na wspomniany skrypt przepływu powietrza
- Ustaw parametry, aby przetestować zadanie:
test dag_x task_y 2019-11-19
Zostało to zweryfikowane tylko przez SequentialExecutor , co może być ważne.
Szkoda, że muszę zmieniać parametry testowe w konfiguracji uruchamiania dla każdego nowego zadania debugowania / programowania, ale jak dotąd jest to bardzo przydatne do ustawiania punktów przerwania i przechodzenia przez kod w „wewnątrz” lokalnego środowiska przepływu powietrza.
Debuguję airflow test dag_id task_id
, uruchamiam na maszynie włóczęgów, używając PyCharm. Powinieneś być w stanie użyć tej samej metody, nawet jeśli używasz przepływu powietrza bezpośrednio na hoście lokalnym.
Dokumentacja Pycharm na ten temat powinien pokazać, jak utworzyć odpowiednią konfigurację „Python Remote Debug”. Kiedy uruchamiasz tę konfigurację, czeka na kontakt z fragmentem kodu, który gdzieś dodałeś (na przykład u jednego z twoich operatorów). A potem możesz debugować jak zwykle, z punktami przerwania ustawionymi w Pycharm.
Może trochę spóźnić się na imprezę, ale szukałem również rozwiązania tego problemu. Chciałem mieć możliwość debugowania kodu tak blisko "trybu produkcyjnego", jak to tylko możliwe (więc nic z testem itp.).
Znalazłem rozwiązanie w postaci „Serwera debugowania Pythona”. Działa to w drugą stronę: Twoje IDE nasłuchuje i połączenie jest nawiązywane ze zdalnego skryptu do edytora.
Wystarczy dodać nową konfigurację uruchamiania typu „Serwer debugowania Pythona”. Otrzymasz ekran z informacją o pip install pydevd-pycharm
zdalnie. Na tej samej stronie możesz wpisać swój lokalny adres IP i port, na którym powinien być dostępny debuger oraz opcjonalne mapowania ścieżek.
Następnie po prostu dodaj proponowane 2 wiersze kodu w miejscu, w którym chcesz rozpocząć sesję debugowania.
Uruchom konfigurację, aby aktywować słuchacz, a jeśli wszystko jest w porządku, twój edytor powinien się zepsuć, gdy tylko zostanie osiągnięta lokalizacja wywołania settrace
.
Edycja/Uwaga: jeśli zatrzymasz konfigurację w edytorze, przepływ powietrza będzie kontynuował zadanie, pamiętaj o tym.
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
AIRFLOW__CORE__EXECUTOR=DebugExecutor
do pola Zmienne środowiskowe w oknie konfiguracji uruchamiania/debugowania Pycharm