【发布时间】:2018-12-11 15:31:12
【问题描述】:
这是代码:
import asyncio
import aiohttp
loop = asyncio.get_event_loop()
session = aiohttp.ClientSession(loop=loop)
data = {'file': open('test_img.jpg', 'rb')}
async def start():
async with session.post("http://localhost", data=data) as response:
text = await response.text()
print(text)
loop.run_until_complete(asyncio.gather(*[start() for i in range(20)]))
我收到一个错误:
ValueError: read of closed file
但是,如果我将 open() 调用移到 start() 函数内部,它就可以工作。但我不想多次打开文件。
【问题讨论】:
-
是的,尽管我仍然想知道为什么相同的代码可以与
requests一起使用。使用files=参数 -
好问题。它真的工作(正确地),还是只是没有引发异常?也许
requests将文件读到最后,但没有关闭它,因此除了第一个请求之外的所有请求都使用零长度数据。
标签: python python-requests python-asyncio aiohttp