Telethon多脚本复用账号触发SQLite锁错误,如何跳过账号继续执行?
解决多脚本复用账号导致SQLite锁定的问题
直接修改代码,重点处理数据库锁定错误并跳过当前账号,同时避免资源泄露:
import sqlite3 for x in range(0,9999): for account in accounts: client = TelegramClient(account, api_id, api_hash) try: await client.connect() if await client.is_user_authorized(): # 这里编写你的业务代码 pass except sqlite3.OperationalError as e: # 仅处理数据库锁定的特定错误 if "database is locked" in str(e).lower(): print(f"账号 {account} 被占用,跳过") continue # 其他SQLite操作错误按原逻辑抛出 else: raise finally: # 无论成功或失败,都关闭客户端释放连接 await client.disconnect()
关键修改说明:
- 精准错误判断:只针对"database is locked"错误执行跳过逻辑,避免误处理其他SQLite操作异常(如文件损坏、权限不足等)
- 资源释放:通过
finally块确保客户端连接一定会被关闭,防止资源泄露 - 明确跳过逻辑:捕获锁定错误后,
continue直接进入下一个账号的循环,不会终止整个脚本执行
内容的提问来源于stack exchange,提问作者Santos
相关产品推荐
相关产品推荐

