首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >exception=TimeoutError()

exception=TimeoutError()
EN

Stack Overflow用户
提问于 2019-02-22 02:38:30
回答 1查看 912关注 0票数 0

我有test.pyAsyncioCurl.py文件。

我运行python .\Src\test.pt并给出了这个错误。

代码语言:javascript
复制
PS C:\Users\Thinkpad\Desktop\BilibiliHelper> python .\Src\test.py
2019-02-22 10:28:27,696 - C:\Users\Thinkpad\Desktop\BilibiliHelper\Src\Log.py[line:56] - DEBUG: GET: https://api.live.bilibili.com/room/v1/area/getRoomList?platform=web&parent_area_id=4&cate_id=0&area_id=0&sort_type=online&page=1&page_size=15
2019-02-22 10:28:29,222 - C:\Users\Thinkpad\Desktop\BilibiliHelper\Src\Log.py[line:56] - DEBUG: STATUS: 200
2019-02-22 10:28:29,222 - C:\Users\Thinkpad\Desktop\BilibiliHelper\Src\Log.py[line:56] - DEBUG: <coroutine object ClientResponse.text at 0x000002C63BF24830>
C:\Users\Thinkpad\Desktop\BilibiliHelper\Src\AsyncioCurl.py:21: RuntimeWarning: coroutine 'ClientResponse.text' was never awaited
  Log.debug(r.text())
Task exception was never retrieved
future: <Task finished coro=<a() done, defined at .\Src\test.py:4> exception=TimeoutError()>
Traceback (most recent call last):
  File ".\Src\test.py", line 7, in a
    data = await AsyncioCurl().get(url,payload)
  File "C:\Users\Thinkpad\Desktop\BilibiliHelper\Src\AsyncioCurl.py", line 23, in get
    return await r.json()
  File "C:\Users\Thinkpad\Anaconda3\lib\site-packages\aiohttp\client_reqrep.py", line 1017, in json
    await self.read()
  File "C:\Users\Thinkpad\Anaconda3\lib\site-packages\aiohttp\client_reqrep.py", line 969, in read
    self._body = await self.content.read()
  File "C:\Users\Thinkpad\Anaconda3\lib\site-packages\aiohttp\streams.py", line 359, in read
    block = await self.readany()
  File "C:\Users\Thinkpad\Anaconda3\lib\site-packages\aiohttp\streams.py", line 381, in readany
    await self._wait('readany')
  File "C:\Users\Thinkpad\Anaconda3\lib\site-packages\aiohttp\streams.py", line 297, in _wait
    await waiter
  File "C:\Users\Thinkpad\Anaconda3\lib\site-packages\aiohttp\helpers.py", line 585, in __exit__
    raise asyncio.TimeoutError from None
concurrent.futures._base.TimeoutError

test.py

代码语言:javascript
复制
import asyncio
from AsyncioCurl import AsyncioCurl

async def a():
    payload = {}
    url = "https://api.live.bilibili.com/room/v1/area/getRoomList?platform=web&parent_area_id=4&cate_id=0&area_id=0&sort_type=online&page=1&page_size=15"
    data = await AsyncioCurl().get(url,payload)
    print(data)

task = [
    a()
]

loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(task))

AsyncioCurl.py

代码语言:javascript
复制
import asyncio
import aiohttp
from Log import Log
from Base import sign
from config import config


class AsyncioCurl:
    def __init__(self):
        self.session = aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=4))

    async def get(self,url,param):
        Log.debug("GET: "+url)
        payload = {
            "cookie":config["Token"]["COOKIE"]
        }
        payload = dict(param,**payload)
        payload = sign(payload)
        async with self.session.get(url,params=payload) as r:
            Log.debug("STATUS: "+str(r.status))
            Log.debug(r.text())
            await self.session.close()
            return await r.json()

    async def post(self,url,param):
            Log.debug("POST: "+url)
            payload = {
                "cookie":config["Token"]["COOKIE"]
            }
            payload = dict(param,**payload)
            payload = sign(payload)
            async with self.session.post(url,data=payload) as r:
                await self.session.close()
                return await r.json()

    async def nspost(self,url,param):
        Log.debug("POST: "+url)
        headers = {
            "Accept":"application/json, text/plain, */*",
            "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
            "Accept-Language":"zh-CN,zh;q=0.9",
            "accept-encoding":"gzip, deflate",
            "cookie":config["Token"]["COOKIE"]
        }
        async with self.session.post(url,data=param,headers=headers) as r:
            await self.session.close()
            return await r.json()

    async def nsdpost(self,url):
        Log.debug("POST: "+url)
        headers = {
            "Accept":"application/json, text/plain, */*",
            "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
            "Accept-Language":"zh-CN,zh;q=0.9",
            "accept-encoding":"gzip, deflate",
            "cookie":config["Token"]["COOKIE"]
        }
        async with self.session.post(url,headers=headers) as r:
            return await r.json()

直接访问本网站是没有错误的。

EN

回答 1

Stack Overflow用户

发布于 2022-10-11 10:26:40

下面一行设置的超时太小了。请求花费的时间比4秒长。

代码语言:javascript
复制
self.session = aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=4))

请以秒为单位增加超时时间,或完全删除timeout参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54819272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档