gpt4 book ai didi

django - gunicorn + redis : Does not work?

转载 作者:IT王子 更新时间:2023-10-29 05:58:38 68 4
gpt4 key购买 nike

我运行一个 Django 服务器,它带有 redis [用于过滤重复记录的内存缓存] 集成到 celery 进程 [将数据异步插入 PostgreSQL 数据库的任务]。 django 服务器通过启用缓存的 django-redis-cache 与 redis 集成。

CACHES = {
'default': {
'BACKEND': 'redis_cache.RedisCache',
'LOCATION': '/tmp/redis.sock',
},
}

如果我使用 ./manage.py runserver ip:8000 来运行我的服务器并开始发布数据,在 Redis 中的 GET/SET 属性期间没有问题,因为它是单个应用程序和我的应用程序运行流畅。

但是现在,我打算通过以下命令将 django 迁移到 gunicorn:

gunicorn myapp:wsgi_app -w 3 -b ip:8000

由于这为 django 进程创建了 3 个工作人员,我相信他们正在尝试访问相同的 redis 服务器以进行缓存。

如果我开始使用此设置发布数据,我会收到此消息,

Internal Server Error: /post/data/
File "/path/to/app/views.py", line 94, in saveData
value = cache.get(key)
File "/usr/local/lib/python2.7/dist-packages/redis_cache/cache.py", line 186, in get
result = self.unpickle(value)
File "/usr/local/lib/python2.7/dist-packages/redis_cache/cache.py", line 248, in unpickle
return pickle.loads(value)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1035, in model_unpickle
return cls.__new__(cls)
TypeError: ('object.__new__(X): X is not a type object (NoneType)', <function model_unpickle at 0x1c49aa0>, ((u'webapi', 'Reading'), [], <function simple_class_factory at 0x1c49a28>))

如果我检查 redis-server 日志 [redis-cli monitor],我在开始使用 gunicorn 后得到空记录。

是否有一种聪明的解决方法可以让 gunicorn 线程的 redis 也保持事件状态?

最佳答案

当 Redis 缓存 un-pickle 一个对象时似乎发生了错误。

原因是Django找不到模型(u'webapi', 'Reading'),

检查是否在settings.INSTALLED_APPS中添加了webapi应用。

关于django - gunicorn + redis : Does not work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22219682/

68 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com