2017-08-02 23 views
5

में सूचीबद्ध करें मेरे पास एक उत्पादन कोड है जो भारी रूप से asyncio.semaphore मॉड्यूल का उपयोग करता है जिसे डेडलॉक समस्या होने का संदेह है। मुझे पहले से ही कुछ समाधान मिला है कि यूनिक्स सिग्नल के साथ चल रहे पायथन कोड को कैसे संलग्न किया जाए, ipdb.set_trace() के साथ डीबग करें और asyncio.Task.all_tasks() के साथ ईवेंट लूप पर सभी कार्यों को सूचीबद्ध करें। क्या मैं प्रत्येक कार्य के ढेर फ्रेम में जांच कर सकता हूं या कोरआउटिन की प्रत्येक पंक्ति को देख सकता हूं जो वर्तमान में ipdb पर वायदा द्वारा लंबित है?डीबग और भविष्य में लंबित सभी कोरआउटिन को पाइथन एसिन्सीओ

+1

हर कार्य विधि 'Task.get_stack()' है। हो सकता है कि आप यही खोज रहे हों। – Qeek

+1

@Qeek विचार के लिए धन्यवाद। '' '[* नक्शा (asyncio.Task.print_stack, asyncio.Task.all_tasks())]' '' ठीक काम करता है। – RainJay

उत्तर

0

ओपी का मानना ​​है के रूप में, आगे निरीक्षण

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

के साथ प्राप्त किया जा सकता है (ओ पी निश्चित रूप से self-answer लिए स्वतंत्र है।)

संबंधित मुद्दे