我的服务器出了点问题,这是一个多租户项目,Windows服务器上的模块运行正常,但Ubuntu上的模块却出现了 "没有名为'memcache'的模块 "的错误。这是一个多租户项目,Windows服务器上的模块工作正常,但是Ubuntu上的模块虽然安装了,却出现了 "没有名为'memcache'的模块 "的错误。我知道它已经安装了,因为我运行了 "python3 manage.py runserver 0.0.0.0:8001",当我用个人浏览器访问时,它工作正常。Gunicorn正确地指向我的虚拟环境,当我重新启动服务时也没有任何日志错误,我现在很绝望。
我的配置。
CACHE_HOST = os.getenv('cache_host', '127.0.0.1')
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': f'{CACHE_HOST}:11211',
},
'estadisticos': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': f'{CACHE_HOST}:11211',
}
}
你的memcache主机是否运行在localhost上,如果不是的话,可能gunicorn是作为服务启动的,而且env var的值不正确。cache_host
在任何情况下,我建议你在你的设置文件的结尾添加打印,并添加一个打印,以查看你是否对gunicorn和你的命令行使用了相同的ptyhon,或者如果你看不到stdout:用open("tmpmylog.log "作为fout:print("my python is",sys.executable,file=fout)。
import sys # if not already imported in settings
print("my python is ", sys.executable)
print("CACHES", CACHES, file=sys.stderr)
或者如果你看不到stdout:用open("tmpmylog.log")作为fout: print("my python is ", sys.executable, file=fout) print("CACHES", CACHES, file=fout)
Check that python3 manage.py runserver 0.0.0.0:8001 creates the same trace as running gunicorn.
delete the file `/tmp/mylog.log` between the two runs.
如果输出是一样的,但memcached对一个人有效,而对另一个人无效,那么你必须检查django的设置是否在其他地方被覆盖了