Uzun süren bir çalışma isteğim var. Ancak, istek, istemcinin bağlantısı kesildiğinde temizlemek istediğim sunucu tarafı oluşturulmuş bazı kaynaklar gerektirir. Dokümanları inceledim, ancak ne zaman olduğunu tespit etmenin bir yolunu bulamıyorum. Herhangi bir fikir?İstemcinin aiohttp istek işleyicisinden bir bağlantıyı kapattığını algıla.
4
A
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()
İlgili konular
- 1. Chrome'da Ziyaret Edilen Bağlantıyı Algıla
- 2. Yuvalar - Sunucu bağlantıyı kestiğinde bir istemcinin bağlantısını keser
- 3. Bir istemcinin canlı olup olmadığını öğrenmek için
- 4. aiohttp ORM var mı?
- 5. onclick işleyicisinden URL alın
- 6. JSod, yesod işleyicisinden dön
- 7. Bağlantıyı gizle bağlantıyı koruyun
- 8. aiohttp web.response body json olarak
- 9. Asyncio ve aiohttp tüm URL'leri işleyiciye yönlendirir
- 10. Yetkisiz bir bağlantıyı kesmek için C#
- 11. Ajax çağrısını algıla, ASP.net
- 12. AvPlayer bit hızını değiştirirse algıla.
- 13. Bu bağlantıyı bir düğme
- 14. Bir bağlantıyı tıklatıp jquery
- 15. İstemcinin 'localhost'una JavaScript Online'dan erişme
- 16. Kasırga kullanarak aiohttp (veya diğer asyncio tabanlı kitaplıklar)
- 17. Kodlamayı algıla
- 18. Bir Ember denetleyicisinde bir olay işleyicisinden "süper" çağrısı
- 19. Bir AJAX isteğinin ne zaman başladığını algıla
- 20. Aiohttp, Asyncio: RuntimeError: Olay döngüsü kapalı
- 21. Çoklu aiohttp Uygulama() aynı işlemde mi çalışıyor?
- 22. Python aiohttp isteği durduruldu ancak istisna oluşturulmadı
- 23. İstemci bağlantıyı kestiğinde redis lpop davranışı
- 24. Bölüm İşleyicisinden Menü İşleyici Nasıl Yeniden Oluşturulur?
- 25. Bir istemcinin IP Adresini Alma Bir web hizmeti için
- 26. RMySQL: Sapsız bir bağlantıyı kapatma
- 27. Normal bir bağlantıyı kullanarak Ember
- 28. node.js http sunucusu, istemcilerin bağlantıyı kestiğini algıladığında
- 29. WPF: Olay işleyicisinden bir animasyonu tetikleyen denetimin adını nasıl alabilirim?
- 30. Olay işleyicisinden ana iş parçacığı bir yöntem yürütme
Hem 'asyncio.CancelledError' ve' aiohttp.ClientDisconnectedError' –
Ah O adamdan haberdar etmedi yakalamak gerekiyor ; Cevabımı güncelleyeceğim. Teşekkürler! –
Bunu nerede kullanmalıyım? Oldukça fazla bir kayıp yaşıyorum. – Goodies