问题标签 [django-redis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
628 浏览

websocket - 我可以在 Windows 服务器上运行 redis 吗?

我在 django 中设计了一个应用程序,使用 django 通道和 redis 服务器进行 websocket 通信,但我必须将它托管在 windows 服务器上。我可以在我的 Windows 机器上本地运行 redis 服务器,它可以很好地在我的本地主机上进行测试。我想知道我是否可以为 Windows 服务器做同样的事情。我可以以及如何为该应用程序运行 redis 服务器。有没有其他选择?我发现的其他答案已经过时,并且是关于在本地机器上运行 redis。

我正在添加一些关于我如何使用我的 redis 服务器进行实时 websockets 通信的代码细节。

我已经为 django 安装了 channels-redis 模块以使用 redis 服务器的配置,如django 频道文档的教程中所述。

现在,如果我在本地机器上运行 redis 服务器,这段代码就可以完美运行。但是由于 redis 是一个基于 linux 的服务器,我在 Windows 服务器上托管它时遇到了问题。我已使用 src 文件夹中此代码中的 server.c 文件来运行我的 redis 服务器:下载 Redis 6.0.9

我在我的 Windows Linux 子系统 (wsl) 中运行 C 程序,并且 redis 服务器变为活动状态。这是在我的测试环境中完成的。

现在我的问题是,我可以对托管应用程序的 Windows 服务器做同样的事情吗?我是否必须重新配置我的服务器中的某些内容才能运行 redis 服务器,或者我可以简单地运行 windows 服务器而不进行任何修改?

0 投票
1 回答
1504 浏览

django - 有没有办法为 Django 缓存锁设置过期时间?

我有一个 Django 3.1.3 服务器,它通过 django-redis 4.12.1 使用 Redis 作为其缓存。我知道缓存锁通常可以通过以下方式设置:

通常,当with块完成执行时,缓存锁会释放。但是,我的代码中有一些自定义逻辑,有时不会释放缓存锁(出于我自己的原因,这很好)。

我的问题:有没有办法为 Django 缓存锁设置超时值,就像设置缓存值的超时值(cache.set('some_key', 'Hello world', 3000))一样?

0 投票
1 回答
236 浏览

django - 每个 url 的 Django redis 缓存

所以我试图实现此外学习如何缓存每个 URL 的 Django 视图。我能够这样做,这就是正在发生的事情......

  1. 我第一次访问一个 URL,Django 设置了缓存。
  2. 如果浏览器相同,我会从缓存中获取结果,而不是在第二次访问期间查询数据库。

现在的疑问是 - 如果我从第一次访问和第二次访问更改我的浏览器,例如,从 Chrome 进行第一次访问(它设置缓存)并且在 Mozilla 的第二次访问期间,它再次设置缓存。我期待它从缓存中返回结果。

在我研究 StackOverflow 并检查它设置为缓存的内容期间,我发现有两个重要的东西首先是标题,其次是内容。而且我认为每次更改浏览器时,标头都是新的,因此它设置缓存而不是从缓存中返回结果。如果我错了,请告诉我。

我有一个公共 URL,并且我想在发出后续请求时显示缓存中的数据,无论浏览器或移动/笔记本电脑/台式机如何,仅基于 Url,这有可能吗?

**(我在想如果来自该国北部的人访问一个 URL,随后从该国南部访问相同的 URL 应该从缓存中获取数据,但基于我的缓存到期时间)

另外,如果我的理解有误,请纠正我。

我正在学习在 Django 上使用 Redis 进行缓存。

0 投票
1 回答
362 浏览

django - Django CACHEOPS 不同查询集的不同超时

我正在使用 Django CACHEOPS。 cacheops 的自述文件

在 settings.py 如何为不同的查询集配置不同的超时?

(将get查询集缓存 10 秒,缓存queryset fetches60 秒)

像这样的东西:(这显然有重复键错误)

我的目标是:我想缓存每篇文章详细信息页面比文章列表页面更长的时间。

0 投票
0 回答
144 浏览

python - Django - redis 优化

我使用 models.objects.all() 从数据库获取数据并将其保存在缓存中。一两分钟后,我刚刚添加了大量数据并想访问它们,但它们没有反映在查询中。

添加新数据时如何同步缓存或添加新数据时如何禁用或删除该缓存

不回复以减少time_out 想知道数据库中的新数据一有缓存同步

0 投票
0 回答
159 浏览

python - shared_task 未在 Windows 10 上的 Celery、Redis、Django 中注册

Django = 3.2 Celery = 4.3.0 (大黄) Redis = 3.5.3 windows 10

项目/芹菜.py

项目/初始化.py

应用程序/任务.py

项目/settings.py

芹菜输出屏幕

我想将我的apps/task.py添加到任务队列中,但唯一注册的任务是proj/celery.py文件中存在的那些。

有人有解决这个问题的方法吗?

0 投票
0 回答
408 浏览

django - Django-q:警告在超时后重生的工人 Process-1:1

我已经安装并配置了 Django-Q 1.3.5(在带有 Redis 3.5.3 和 Python 3.8.5 的 Django 3.2 上)。这是我的集群配置:

我已经适当地选择timeout:60retry:65解释了我的问题。我创建了这个简单的函数来通过管理员计划任务调用:

这是我的“计划任务页面”(localhost:8000/admin/django_q/schedule/)

ID 姓名 功能 成功
1 测试超时 mymodel.tasks.test_timeout_task ?

当我运行此任务时,我收到以下警告:

并且任务不再执行。

所以,我的问题是:有没有办法正确处理不可预测的任务?

0 投票
1 回答
705 浏览

python - Django Channels Redis:应用程序内部异常:未获取锁

完全加载的多租户 Django 应用程序,具有 1000 个使用 Daphne/Channels 的 WebSockets,运行良好几个月,突然租户都称它为应用程序运行缓慢或完全挂起的支持线。将其缩小到 WebSockets,因为 HTTP REST API 命中快速且无错误。

没有任何应用程序日志或操作系统日志表明存在某些问题,因此唯一要做的就是下面提到的异常。它在两天内一次又一次地发生在这里和那里。

我不希望有任何深入的调试帮助,只是一些关于可能性的即兴建议。

拆分配置HTTP服务于uwsgi,daphne服务于asgi,Nginx

0 投票
0 回答
69 浏览

python - 如何使用 Django Channels 动态创建和关闭无限运行的 Celery 任务

我正在创建一个加密货币应用程序,用户可以在其中获取货币对的实时数据(例如“BTC/USD”)。我正在尝试建立一个系统,订阅同一对的用户可以共享 API 调用。

到目前为止,我可以动态创建 websocket 连接并将用户添加到组中。

我已将redis设置为代理服务,将celery设置为任务管理器系统。我知道如何将数据从 celery 任务发送到消费者组,但我想在创建组时开始任务,并最终在丢弃组时关闭任务。这似乎是管理 API 调用的最有效方式。

是否可以通过创建 django 组来初始化 celery 任务?在这样做的过程中,将一个参数(在本例中为对)传递给 celery 任务?

或者,这是解决此类问题的正确架构吗?

0 投票
1 回答
857 浏览

django - Django使用多个redis进行缓存

我有一个 Django 项目,我正在使用django-redis,我想在其中实现不同类型的缓存,

  1. 缓存搜索查询
  2. 缓存静态页面
  3. 缓存用户数据(例如:在线状态)

我可以为不同类型的缓存添加不同的前缀,但我想为我拥有的所有不同的缓存使用不同的 redis 服务器。我在文档上找不到任何内容如何执行此操作

我当前的设置

}

我想要什么

}