部署至Azure App Service后gremlinpython submitAsync()报max_workers缺失错误
问题根因
你在requirements.txt中引入了futures依赖包,这个包是Python 2版本的并发库,用于给Python 2补全concurrent.futures能力。而你部署用的是Python 3.8版本,标准库已经原生内置了concurrent.futures模块,安装futures包会覆盖标准库的同名模块:
- Python 3标准库的
ThreadPoolExecutor.__init__中max_workers参数有默认值,无需显式传入 - 第三方
futures包的ThreadPoolExecutor.__init__要求必须显式传入max_workers参数,没有默认值,这就是你触发TypeError的直接原因
你之前调整gunicorn worker数、gremlin client初始化参数都不生效,是因为问题根本不在业务配置层,属于底层依赖冲突导致的。
解决步骤
- 从你的
requirements.txt中删除futures这一行 - 重新构建部署你的Azure App Service即可
补充说明
你本地Windows环境没触发报错的原因大概率是:
- 你本地开发环境没有安装
futures包,或者虚拟环境中futures包没有覆盖标准库的concurrent.futures模块,调用的是原生标准库的实现,所以不会报错 - 部署时Azure App Service会严格按照
requirements.txt安装所有依赖,所以会触发覆盖问题
内容的提问来源于stack exchange,提问作者Kachopsticks
相关产品推荐
相关产品推荐

