2015-05-01 26 views
12

Chciałbym włączyć nieudane wykrywanie Corynine Asyncio, ale nie udało się.Python asyncio przykład debugowania

Ten prosty kod realizuje zalecenia dotyczące:
https://docs.python.org/3/library/asyncio-dev.html#asyncio-logger

ale faktycznie nie złapać un-dało „atrapę” współprogram.

import sys, os 
import asyncio 
import logging 
import warnings 

os.environ['PYTHONASYNCIODEBUG'] = '1' 
logging.basicConfig(level=logging.DEBUG) 
warnings.resetwarnings() 

@asyncio.coroutine 
def dummy(): 
    print('yeah, dummy ran!!') 

@asyncio.coroutine 
def startdummy(): 
    print('creating dummy') 
    dummy() 

if __name__ == '__main__': 
    lp = asyncio.get_event_loop() 
    lp.run_until_complete(startdummy()) 

Spodziewałem się, że program zakończy się ostrzeżeniem na temat "manekina", stworzonego, ale nie uzyskanego od.

Faktycznie, wyniki są następujące:

DEBUG:asyncio:Using selector: SelectSelector 
creating dummy 
sys:1: ResourceWarning: unclosed <socket object at 0x02DCB6F0> 
c:\python34\lib\importlib\_bootstrap.py:2150: ImportWarning: sys.meta_path is empty 
sys:1: ResourceWarning: unclosed <socket object at 0x02DE10C0> 

śladu opuszczonym współprogram. czego mi brakuje?

Odpowiedz

19

asyncio wykonuje sprawdzenie dla PYTHONASYNCIODEBUG przy imporcie modułu.

Zatem trzeba środowiska konfiguracji zmiennej przed pierwszego importu asyncio:

import os 
os.environ['PYTHONASYNCIODEBUG'] = '1' 
import asyncio 

# rest of your file 
+0

że było, dziękuję. – Rdbhost

+0

s/import sys/import os/ – djh

+0

Naprawiono. @Djh dzięki! –

Powiązane problemy