2015-08-12 17 views
5

URL'yi istemek için aiohttp kullanın. Çoğu zaman normal çalışır, ancak bazen herhangi bir istisna oluşturmadan durur.Python aiohttp isteği durduruldu ancak istisna oluşturulmadı

Kodda gördüğünüz gibi, tüm özel durumları yakalarım, ancak durduğunda hiçbir özel durum kaydı yazdırılmaz.

günlükleri benziyor:

get_live_league_games: while True 
try 
yield from aiohttp.request 

ama 'res = yield from r.json()' durana ve özel durumlar durum değildir, yazdırmaz. kopukluk hatası yükseltir önce bağlantı çok uzun süre 'askıda' olabilir - nedeniyle internet doğayı yaşanabilir O

while True: 
    print('get_live_league_games: while True') 
    start = time.clock() 
    try: 
     print('try') 
     r = yield from aiohttp.request('GET',url) 
     print('yield from aiohttp.request') 
     res = yield from r.json() 
     print('res = yield from r.json()') 
    except aiohttp.errors.DisconnectedError as e: 
     logging.warning('get_live_league_games:',e) 
     yield from asyncio.sleep(10) 
     continue 
    except aiohttp.errors.ClientError as e: 
     logging.warning('get_live_league_games:',e) 
     yield from asyncio.sleep(10) 
     continue 
    except aiohttp.errors.HttpProcessingError as e: 
     logging.warning('get_live_league_games:',e) 
     yield from asyncio.sleep(10) 
     continue 
    except Exception as e: 
     logging.warning('get_live_league_games,Exception:',e) 
     yield from asyncio.sleep(10) 
     continue 
    print('request internet time : ', time.clock()-start) 
    yield from asyncio.sleep(10) 
+0

alakasız: kod çok tekrarlı. Sonuncu hariç tüm istisna işleyicileri bırakabilirsiniz. – jfs

cevap

5

.

Bu nedenle, genellikle istemci http işlemleri için zaman aşımına gereksinim duyarsınız.

aiohttp.request() çağrısının asyncio.wait_for'a aktarılmasını öneririm.

+0

http zaman aşımı parametresi çalışır mı? aiohttp zaman aşımı istisnası atar? – Nianing

+0

Kod r.json() – Nianing

+0

gelen verim durur gibi görünüyor r.json() 'fiili aslında HTTP yük yükü gövdesi okur bu yüzden –

İlgili konular