POST 使用 aiohttp 请求 returns 对于稍大的文件无效的方法

POST request with aiohttp returns invalid method for slightly larger files

我尝试为我的一项服务实施 aiohttp 请求。我需要将带有 .pdf 文件的 POST 请求发送给另一个 API。此 API 接受 multipart/form-data 和 application/pdf。 以下代码适用于某些 .pdf:

async with aiohttp.ClientSession() as session:        
    async with session.post(URL, data={'file': open(file_to_store, 'rb').read()}) as aioresp:
        asynresp = await aioresp.json()

但是对于稍微大一点的 .pdf,我从接收 API 和

中得到一个错误
WARNING:  Invalid HTTP request received.
   Traceback (most recent call last):
     File "/usr/local/lib/python3.7/site-packages/uvicorn/protocols/http/httptools_impl.py", line 131, in data_received
       self.parser.feed_data(data)
     File "httptools/parser/parser.pyx", line 212, in httptools.parser.parser.HttpParser.feed_data
   httptools.parser.errors.HttpParserInvalidMethodError: Invalid method encountered

我认为它与 aiohttp 尝试流式传输更大的文件有关,但我不知道如何以其他方式格式化请求?

因为我无法解决问题,所以我切换到 httpx,一切正常,我的问题在几分钟内就解决了。注意超时,您应该设置一个对您的要求有意义的值。我强烈推荐 httpx:https://www.python-httpx.org/

files = {'file': open(file_to_store, 'rb')}

async with httpx.AsyncClient() as client:
    r = await client.post(URL, files=files, timeout=None)