Gunicorn没有找到 "memcache "模块,但当我运行python3 manage.py runserver 0.0.0.0:8000时却找到了。

问题描述 投票:0回答:1

我的服务器出了点问题,这是一个多租户项目,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',
    }
}
python django memcached gunicorn
1个回答
0
投票

你的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的设置是否在其他地方被覆盖了

© www.soinside.com 2019 - 2024. All rights reserved.