telethon - 使用 telethon.sync 时如何处理“洪水等待”错误?
问题描述
看起来客户端的同步版本不会引发任何错误?使用 telethon.sync 时处理错误的正确方法是什么?
下面的代码导致客户端进入“睡眠”,但没有错误。
我试图用明确的例外来做同样的事情FloodWaitError
,它并没有解决问题。
from telethon.sync import TelegramClient
from telethon.tl.functions.channels import GetFullChannelRequest
if __name__ == '__main__':
setup_logging(level=logging.INFO)
tg = TelegramClient(
'anon',
api_id=config.API_ID,
api_hash=config.API_HASH,
)
with tg as client:
try:
result = client(GetFullChannelRequest(-1001100118939))
except ValueError as e:
print(e)
break;
# print('Flood wait for ', e.seconds)
# time.sleep(e.seconds)
print(result)
解决方案
telethon.sync
不会改变异常的行为。但是,FloodWaitError
不是 a ValueError
,所以你except
不会抓住它。以下将起作用:
from telethon import errors
try:
...
except errors.FloodWaitError as e:
print('Flood wait for ', e.seconds)
请注意,默认情况下,如果洪水错误少于一分钟,库会自动休眠,在这种情况下,为了方便起见,它会等待而不是引发。
推荐阅读
- android - 检查 Firebase 事件是否成功执行
- android - 如何在 Android 上为一周中的特定日子安排闹钟?
- delphi - 调用汇编语言函数导致“浮点堆栈检查”异常
- android - 设置提醒后一分钟内弹出每周通知
- html - 垂直对齐图像旁边的文本
- javascript - 为什么我无法在 nodejs 中保存和检查会话?
- arrays - 如何在没有for in scala的情况下迭代数组?
- css - 在不使用 JavaScript 的情况下消除渲染阻塞 CSS - GoogleAMP
- bootstrap-4 - 如何在引导程序 4 中将文本和按钮放在同一行
- sql - 新手问题:代码行以列名 null 结尾。如何在此行末尾添加注释?