本地正常的Django多进程在Ubuntu服务器报错:__init__()意外参数'initializer'
问题解决:ProcessPoolExecutor 初始化参数报错
问题原因
initializer参数是Python 3.9才新增到ProcessPoolExecutor构造函数中的,你的服务器虽升级到Python 3.7.5,但仍低于3.9版本,因此会抛出__init__() got an unexpected keyword argument 'initializer'错误。本地环境应该使用了Python 3.9+,所以能正常运行。
解决方案
方案1:升级服务器Python版本
将服务器Python版本升级到3.9及以上,即可直接使用initializer参数。
方案2:手动在子进程函数中初始化Django
如果无法升级Python,修改wallet_verify函数,在函数开头手动调用django.setup(),同时注意Django模型的导入要放在函数内部(避免子进程未初始化时导入出错):
def wallet_verify(item): # 子进程中初始化Django环境 import django django.setup() # 在这里导入需要用到的Django模型等模块 from yourapp.models import YourModel # 后续业务逻辑 # ...
然后修改视图代码,去掉initializer参数:
def verifyt(request): listi = get_listi() print("verifyt", listi) with ProcessPoolExecutor(max_workers=4) as executor: results = executor.map(wallet_verify, listi) return HttpResponse("done")
内容的提问来源于stack exchange,提问作者user18377368
相关产品推荐
相关产品推荐

