python-telegram-bot任意回调数据缓存疑问:1024含义及超限问题
关于python-telegram-bot arbitrary_callback_data的疑问解答
1. 默认的1024限制代表什么?
1024是PTB内存中两类映射存储的最大活跃条目数:
- 一类是「你传入的回调数据对象(比如字典、自定义类实例)」与PTB自动生成的UUID的映射
- 另一类是「Telegram返回的CallbackQuery.id」与对应UUID的映射
这个限制针对的是当前处于“待触发”状态的回调数据——也就是用户已看到按钮但尚未点击的条目。一旦用户点击触发回调,或者按钮因超时等原因失效,对应的条目会被从内存中清理,释放空间。
2. 数百万唯一的删除按钮会超出限制吗?
不会。因为你当前的写法是直接把字符串delete_doc_{the_id_of_doc}作为callback_data传入,没有用到arbitrary_callback_data的核心机制:
- 当直接传字符串时,Telegram API会原样传递该字符串给机器人,PTB不会将其转换为UUID,也不会在内存中存储任何映射关系
- 只有当你使用arbitrary_callback_data功能(比如传入非字符串的Python对象作为
callback_data)时,PTB才会启用内存映射,此时才会受1024的限制
内容的提问来源于stack exchange,提问作者AmirX
相关产品推荐
相关产品推荐

