Gunicorn 找不到'memcache'模块,但当我运行 python3 manage.py 运行服务器 0.0.0.0:8000 时找到它



我的服务器有问题。这是一个多租户项目,Windows 服务器中的一个工作正常,但 Ubuntu 中的项目给了我一个"没有名为'memcache'的模块"错误,尽管它已安装。我知道它已安装,因为我运行了"python3 manage.py 运行服务器 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',
}
}

那么,您的内存缓存主机是否在本地主机上运行? 如果不是,也许Gunicorn是作为服务启动的,并且没有env varcache_host的正确值

无论如何,我建议您在设置文件的末尾添加打印件 并打印一次以查看您是否对 gunicorn 和命令行使用相同的 ptyhon:

import sys  # if not already imported in settings
print("my python is ", sys.executable)
print("CACHES", CACHES, file=sys.stderr)

或者,如果您看不到标准输出: 使用 open("/tmp/mylog.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 设置是否没有在其他地方被覆盖

相关内容

最新更新