Ошибка переполнения при запуске моего диссон-бота в tmux - PullRequest
0 голосов
/ 02 апреля 2020

Я работал над системой аутентификации discord.py, которая при отправке пользователем ключа назначает ему роль, а через месяц удаляет эту роль.

Все работает нормально, когда я запускаю его на своем домашнем компьютере P C или даже на сервере, но когда я запускаю свой скрипт в tmux, я получаю следующую ошибку: "overflowError: timeout is too small". Tmux не может обработать такую ​​длительность ожидания или это может означать, что ошибка вызвана модулем asyn c? Мне нужно использовать tmux, так как мне нужен скрипт ro run 24 / 7.

Соответствующий фрагмент моего скрипта выглядит так -

role = discord.utils.get(member.guild.roles, name='Member')
await member.add_roles(role)
await asyncio.sleep(2592000)
await member.remove_roles(role)

Любая помощь будет очень признательна

1 Ответ

0 голосов
/ 03 апреля 2020

Проблема не в tmux, а в серверной ОС, предположительно Linux. Из-за ограничений базового системного вызова , asyncio.sleep() не может спать в течение более 2**31-1 миллисекунд, то есть ~ 24,8 дня. Поскольку ваш код пытается спать в течение 30 дней, вы получаете ошибку .

Обходной путь - разделить сон на меньшие, которые не превышают 24,8 дня:

await asyncio.sleep(1296000)
await asyncio.sleep(1296000)
...