Discord py OSError: [WinError 121] 信号量超时期限已过期

问题描述 投票:0回答:2

最近我收到了标题中的错误。我不确定是什么导致了这个问题,大约一周前它随机停止了机器人的工作。我已经完成了谷歌搜索,但仍然没有找到解决这个问题的正确方法。我已在完整错误的粘贴箱下方链接以及我当前使用的不和谐机器人的链接。我已经与机器人的开发人员交谈过,目前使用它的人没有任何问题。这似乎是我的问题。如果有人可以帮助我解决这个问题,我将不胜感激。

https://github.com/yannickgloster/discord-10man

OSError: [WinError 121] The semaphore timeout period has expired

https://pastebin.com/2Hsg03if

discord discord.py
2个回答
1
投票

什么是信号量?

来自https://superuser.com/a/1074583/1698404

信号量(和互斥锁)是一个同步对象,用于在共享资源的各个进程之间进行通信。例如,如果您有多个线程执行除法检查素数,则您可能希望在每次测试完成后分配不同的除数。

超时是什么意思?

线程需要使用“等待函数”检查信号量以查看对象是否空闲。然而,为了处理死锁,如果一个线程无法释放信号量,等待函数可以指定一个有限的超时,即您看到的消息。 如果传输时间过长,则控制它的信号量就会过期。

我读到一些想要连接 Postgres 数据库的人也遇到了同样的问题。原因是数据库所在的VPS没有打开Postgres通信的端口。

这可能是发生错误的一个可能原因。在您的情况下,错误发生在以下代码中:

session = aiohttp.ClientSession() base_url = f'http://{self.bot.bot_IP}:{self.bot.web_server.port}' response = await session.get(f'{base_url}/map-veto')

可能您要通信的服务器上的端口未打开。

我发现的另一个解释是

Python 中的错误

。意味着如果不是上述原因,您应该忽略/忽略错误


0
投票
proxy

参数添加到

session.get
,如本示例片段所示:
import aiohttp

url = 'https://example.com'
proxy_url = 'http://<user>:<pass>@<proxy>:<port>'

async with aiohttp.ClientSession() as session:
    async with session.get(url, proxy=proxy_url)

	
© www.soinside.com 2019 - 2024. All rights reserved.