我正在尝试发出高并发网络请求,并且在执行开始时没有问题。程序在十到二十秒(一个网络请求处理时间不超过二十秒)后开始报告此错误。我知道这应该是因为端口已用尽,但我不知道如何在aiohttp中设置端口多路复用。
lvbuer@ubuntu:~/aiohttp-master$ ls
aiohttp codecov.yml CONTRIBUTORS.txt HISTORY.rst MANIFEST.in pytest.ini setup.cfg tools
CHANGES CODE_OF_CONDUCT.md docs LICENSE.txt pyproject.toml README.rst setup.py tox.ini
CHANGES.rst CONTRIBUTING.rst examples Makefile pytest.ci.ini requirements tests vendor
lvbuer@ubuntu:~/aiohttp-master$ find . -type f|xargs grep "SO_REUSER*"
lvbuer@ubuntu:~/aiohttp-master$
未找到套接字设置的SO_REUSER *
这是代码的一部分:
async def fetch(rcon, url, task, connect_timeout, read_timeout):
timeout = aiohttp.ClientTimeout(sock_connect=connect_timeout, sock_read = read_timeout)
try:
async with aiohttp.ClientSession(timeout=timeout) as session:
async with session.get(url+task) as resp:
if resp.status != 200:
rcon.lpush("queue", int(task[2:-1], 10))
return await resp.text()
except asyncio.TimeoutError:
rcon.lpush("queue",int(task[2:-1],10))
except asyncio.CancelledError:
rcon.lpush("queue",int(task[2:-1],10))
raise