在 python 中避免 FloodWait
Avoid FloodWait in python
我是 Pyrogram 的新手,我尝试制作订阅机器人
我想在任何消息满足我的过滤器时立即发送消息,但每次我连续发送超过 3 条消息时,我都会收到 FloodWait 错误。捕获那个异常没有问题,但是总是越来越大
15 -> 60 -> 333 -> 417 秒
如何避免?每条消息后睡几秒钟无济于事。而且我没有在文档中找到任何关于确切估计等待时间的信息
for user in subs_arr:
try:
app.send_message(user, msg)
time.sleep(10)
except pyrogram.errors.exceptions.flood_420.FloodWait as wait_err:
wait_err = str(wait_err)
time.sleep(wait_err.x)
经过一些研究,我发现无法避免 FloodWait :D
但我对time.sleep的理解完全错误。我为那个机器人使用了 Pyrogram,我不需要那个机器人的异步组件
然而,bot 需要异步睡眠,我在以这种方式重新设计它时遇到了问题。最后我想出了那个解决方案(现在睡眠通常是 <=60 秒)
try:
await app.send_message(user, msg)
await asyncio.sleep(3)
except pyrogram.errors.exceptions.flood_420.FloodWait as wait_err:
await asyncio.sleep(wait_err.x)
except TimeoutError:
continue
except pyrogram.errors.exceptions.bad_request_400.UsernameNotOccupied:
continue
希望它能帮助某些人,甚至有人会建议我更好的方法
我是 Pyrogram 的新手,我尝试制作订阅机器人
我想在任何消息满足我的过滤器时立即发送消息,但每次我连续发送超过 3 条消息时,我都会收到 FloodWait 错误。捕获那个异常没有问题,但是总是越来越大
15 -> 60 -> 333 -> 417 秒
如何避免?每条消息后睡几秒钟无济于事。而且我没有在文档中找到任何关于确切估计等待时间的信息
for user in subs_arr:
try:
app.send_message(user, msg)
time.sleep(10)
except pyrogram.errors.exceptions.flood_420.FloodWait as wait_err:
wait_err = str(wait_err)
time.sleep(wait_err.x)
经过一些研究,我发现无法避免 FloodWait :D
但我对time.sleep的理解完全错误。我为那个机器人使用了 Pyrogram,我不需要那个机器人的异步组件 然而,bot 需要异步睡眠,我在以这种方式重新设计它时遇到了问题。最后我想出了那个解决方案(现在睡眠通常是 <=60 秒)
try:
await app.send_message(user, msg)
await asyncio.sleep(3)
except pyrogram.errors.exceptions.flood_420.FloodWait as wait_err:
await asyncio.sleep(wait_err.x)
except TimeoutError:
continue
except pyrogram.errors.exceptions.bad_request_400.UsernameNotOccupied:
continue
希望它能帮助某些人,甚至有人会建议我更好的方法