使用ProxyBroker遇Python 3.10兼容错误,求解决方案
解决ProxyBroker在Python3.10中的TypeError问题
问题根源
你碰到的错误是因为ProxyBroker的旧版本代码与Python3.10不兼容。Python3.10移除了asyncio.Queue()的loop参数,但ProxyBroker的源码(具体是api.py第97行)仍在创建Queue时传入该参数,导致触发TypeError。
解决方案
1. 降级Python版本到3.9及以下
如果不想修改代码或找替代版本,直接将Python版本降到3.9或更低,就能兼容官方发布的ProxyBroker版本。可以用版本管理工具(如pyenv)快速切换Python版本。
2. 修改ProxyBroker源码修复兼容问题
找到本地安装的ProxyBroker的api.py文件(路径在报错信息里:/home/zed/.local/lib/python3.10/site-packages/proxybroker/api.py),打开后定位到第97行:
self._on_check = asyncio.Queue(maxsize=max_conn, loop=self._loop)
将其修改为:
self._on_check = asyncio.Queue(maxsize=max_conn)
去掉loop=self._loop参数即可。如果后续还有其他类似报错,找到所有asyncio.Queue()调用,移除loop参数即可。
3. 使用支持Python3.10的ProxyBroker衍生版本
可以查找社区维护的、针对Python3.10修复的ProxyBroker分支版本,通过pip安装这类包,无需手动修改源码。
验证修复
修改完成后,重新运行你的代码或命令行:
proxybroker find --types HTTP HTTPS --lvl High --countries US --strict -l 10
应该就能正常获取代理,不再触发TypeError。
内容的提问来源于stack exchange,提问作者tormaoen
相关产品推荐
相关产品推荐

