Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x000000000309FAF0>
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\proactor_events.py", line 116, in __del__
self.close()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\proactor_events.py", line 108, in close
self._loop.call_soon(self._call_connection_lost, None)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 719, in call_soon
self._check_closed()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 508, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
python写异步爬虫时,时长会遇到上述警告,之所以如此,或许并非你编写代码的问题,而是系统环境的缘故。
在 Windows 上,默认的事件循环策略可能会导致一些问题,例如某些操作系统调用可能无法与事件循环配合良好。通过设置 asyncio
的事件循环策略,你可以使用更符合 Windows 的事件循环机制,从而提高代码的稳定性和性能。
添加如下代码,问题即可解决。
import asyncio
import aiohttp
import platform
# 如果是 Windows 系统,则设置事件循环策略
if platform.system() == 'Windows':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())