2016-03-29 12 views

cevap

3

Bu, belgelere bakıldığında çok açık değildir, ancak asyncio sunucusunun, bağlantı kapatıldığında işleyici koroutine bir CancelledError atmasıdır. Eşzamansız bir işlemin tamamlanmasını beklerken nerede olursanız olun CancelledError'u yakalayabilirsiniz.

bu kullanarak, böyle bir şey ile bir bağlantı sonra temizlik:

async def passthrough_data_until_disconnect(): 
    await create_resources() 
    while True: 
     try: 
      await get_next_data_item() 
     except (concurrent.futures.CancelledError, 
       aiohttp.ClientDisconnectedError): 
      # The request has been cancelled, due to a disconnect 
      await do_cleanup() 
      # Re-raise the cancellation error so the handler 
      # task gets cancelled for real 
      raise 
     else: 
      await write_data_to_client_response() 
+4

Hem 'asyncio.CancelledError' ve' aiohttp.ClientDisconnectedError' –

+0

Ah O adamdan haberdar etmedi yakalamak gerekiyor ; Cevabımı güncelleyeceğim. Teşekkürler! –

+0

Bunu nerede kullanmalıyım? Oldukça fazla bir kayıp yaşıyorum. – Goodies

İlgili konular