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
5
A
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.)
Każde zadanie ma metodę 'Task.get_stack()'. Może tego właśnie szukasz. – Qeek
@Qeek Dzięki za pomysł. '' '[* map (asyncio.Task.print_stack, asyncio.Task.all_tasks())]' '' działa dobrze. – RainJay