2017-08-02 73 views
5

Mam kod produkcyjny, który intensywnie używany moduł asyncio.semaphore, który jest podejrzewany o problem zakleszczenie. Znalazłem już rozwiązanie, jak dołączyć do uruchamiania kodu Pythona z sygnałem unix, debugować z ipdb.set_trace() i wyświetlić listę wszystkich zadań w pętli zdarzeń z asyncio.Task.all_tasks(). Czy mogę dalej sprawdzać w ramce stosu każdego zadania lub przeglądać każdą linię coroutine, która jest obecnie w toku kontraktów futures na ipdb?Debugowanie i lista wszystkich Coroutine oczekujących na przyszłość w python asyncio

+1

Każde zadanie ma metodę 'Task.get_stack()'. Może tego właśnie szukasz. – Qeek

+1

@Qeek Dzięki za pomysł. '' '[* map (asyncio.Task.print_stack, asyncio.Task.all_tasks())]' '' działa dobrze. – RainJay

Odpowiedz

0

Jak zauważa OP, dalsze badania mogą być uzyskane z

[*map(asyncio.Task.print_stack, asyncio.Task.all_tasks())] 

(OP jest z pewnością swobodnie self-answer.)