问题标签 [django-cache]
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.
django - 无法连接“str”和“tuple”对象 - Django - johnny cache
我尝试用我的 django 网站安装 johnny 缓存。
所以我设置了所有与约翰尼缓存相关的设置,如下所示:
到目前为止,整个项目仍然在生产模式下正常运行。但是在设置中间件后立即出现
'johnny.middleware.LocalStoreClearMiddleware'
以下'johnny.middleware.QueryCacheMiddleware'
异常:
注意:约翰尼缓存没有在 INSTALLED_APPS 中设置,因为文档说它没用
编辑:
好吧,我发现只有在缓存命中时才会引发异常。当我等待 memcached 中的存储值过期时,然后在加载页面上,没有抛出异常......
为了给我的问题添加更多阴影,当我在 localhost 中激活 johnny 运行整个项目时,一切正常。但是当我在 prod 环境(Apache/2.2.15(CentOS))中运行它时,会抛出异常......并且两个环境上的 django 版本完全相同:1.3.1
注意:我已经设置了 okm 指定的中间件顺序
谢谢
django - Django - 用于多个进程的强尼缓存
我已经使用托管在 apache 上的应用程序之一配置了 johnny 缓存。它配置了 memcached 作为后端,在默认端口上运行在同一台机器上。
当多个 Web 客户端通过 apache 时,缓存工作正常。它们都从缓存中读取,任何更新都会使缓存失效。但是,当 python 程序/脚本使用 django(具有 johnny 配置的相同 settings.py)从数据库读取时,它不会从缓存中读取,因此该程序所做的任何更新都不会影响缓存。这让我不得不让 Web 客户端从缓存中读取陈旧的数据。
我在 johnny cache 的文档中没有找到与此相关的任何内容。对这种情况有什么想法吗?
我正在使用 johnny 缓存 0.3.3、django 1.2.5 和 python 2.7。
编辑: 要回答评论中的一个问题,我以这种方式从脚本中的数据库中读取-
我知道它不会从缓存中读取,因为我通过触发更新 sql 语句直接更新表,并且更新的值不会反映在我的 Web 客户端中,因为它仍然从缓存中读取。而当我使用 MyModelClass.objects.get(id=1) 重新获取对象时,我的脚本会显示更新的值
谢谢,
django - 预缓存 Django REST 视图
我有一个用 django 实现的 REST-ful 服务,对于访问的每个资源,我想缓存可能被访问的相关数据。
例如 ressourcehttp://www.example.com/publication/1280
会给出 xml 响应:
然后我想预先缓存与资源http://www.example.com/user/1
和http://www.example.com/author/564
.
由于在 Web 服务中给出的响应是一种数据结构,我认为缓存整个响应比查询集更好。如果我们缓存查询集,那么每次访问资源时我们都会在模板渲染中浪费时间。
这是一个好方法吗?我错过了什么吗?
如果这种方法是正确的,那么我如何使用 django 提供的中间件预先缓存视图
'django.middleware.cache.UpdateCacheMiddleware'
和
'django.middleware.cache.FetchFromCacheMiddleware'
?
谢谢
django - Django Johnny 缓存 - 使用 MAN_IN_BLACKLIST 包含表而不是排除?
我知道 Johnny 缓存MAN_IN_BLACKLIST
和JOHNNY_TABLE_BLACKLIST
. 有没有办法指定相反的?那就是只指定需要缓存的表?我想这样做的原因很简单,因为我们在应用程序中有超过 200 个表,我想缓存一些并且不希望我MAN_IN_BLACKLIST
的表非常大。
谢谢,
django - 如何在 Django 中删除缓存的模板片段?
以前,我在我的 Django 模板中设置了一个缓存的 HTML 块,如下所示。
现在,我已经更新了这个缓存的内容并想要刷新它。我尝试更改时间无济于事:
在这种情况下,页面仍然显示旧的缓存 HTML。
我还尝试删除与缓存相关的模板标签并重新插入它们。但是,在这种情况下,内容只是在我重新插入缓存模板标签后恢复为最初缓存的内容。
我能做些什么?我不想等待大约 2 小时来重新加载我的缓存。
python - Django Johnny-Cache TypeError
我无法弄清楚这一点,并且在谷歌搜索后找不到解决方案。我正在为我的 Django 应用程序实现缓存。
我采取的步骤是:
brew install libmemcache,它也安装了 memcache
点安装 pylibmc
pip install -e hg+https://jmoiron@bitbucket.org/jmoiron/johnny-cache,安装没有错误。
将此添加到我的 settings.py
/li>
现在,每当我浏览时,在控制台中我都可以看到存储在 memcache 中的东西,但是一旦 memcached get 出现,Caught TypeError while rendering: cannot concatenate 'str' and 'tuple' objects
就会被抛出。不管正在运行什么命令,错误都在/env/pfenv/lib/python2.7/site-packages/django/db/backends/mysql/compiler.py in resolve_columns, line 12
.
还有另一个关于此的 SO 问题,但选择的答案是仅使用项目的不同分支,该分支尚未更新,其更改实际上几乎立即合并到主存储桶中。pypi 版本(我也尝试过)来自他们声称破坏了事情的提交之前,并且那个版本给了我同样的错误。这个项目每两周左右更新一次,我想从他们发布的其他错误修复中受益。
这应该很容易实现,我在这里做错了什么?
更新
提交了一个错误报告,其中还包括堆栈跟踪,以防万一这不是我做过的事情。
更新 2
实际上回去刷新了缓存,关闭了 johnny-cache,并尝试了使用 pylibmc 的 vanilla django 缓存设置。不工作,每一页都出现同样的错误。用 python-memcache 尝试过,同样的事情。不知道在这里寻找什么。完全关闭缓存,该网站工作得很好。有点需要缓存。
更新 3
显然,这个相同的来源由一位同事检查并以相同的方式安装。我不知道有什么区别或者还有什么可以解决的。有什么建议么?
python - TypeError 不能腌制函数对象(Django 缓存)
为什么第一个示例抛出TypeError (can't pickle function objects)
而第二个没有,我想这与 QuerySet 评估(Django 1.4)有关?
示例 2
如果我用列表理解设置 foo 它可以工作:
python - 在 Python / Django 中定义另一个缓存控制而不是设置缓存超时
我想缓存我的视图如下:
这会自动将我的视图缓存 10 秒,并自动设置 Cache-Control/Expire 标头。我只想将我的视图缓存 10 秒,但最大年龄为 3600 秒。
例如以这种方式尝试过:
或者这样:
但是当在我的 Django-View 中指定其中一个时,它会将视图缓存 3600 秒而不是 10 秒。还尝试了像'cache_control'这样的装饰器,但没有任何帮助。
这个问题有解决方案吗?我正在使用 Django 1.4.1。
不知道是不是相关的,我激活的中间件类是
- django.middleware.common.CommonMiddleware
- django.contrib.sessions.middleware.SessionMiddleware
- django.middleware.csrf.CsrfViewMiddleware
- django.contrib.auth.middleware.AuthenticationMiddleware
- django.contrib.messages.middleware.MessageMiddleware
- django.middleware.http.ConditionalGetMiddleware
我已激活 ConditionalGetMiddleware 以确保将根据最后修改的标头发送 304。
非常感谢!
霍尔格
django - 缓存查询集和过滤疑问
我正在开发一个需要我过滤大量记录的应用程序。我一直在阅读有关缓存 QuerySet 和相关内容的信息,并找到了一些很好的材料。例如:
在 django 中缓存查询结果 https://docs.djangoproject.com/en/dev/topics/db/queries/#caching-and-querysets
还有一些关于 QuerySet 工作等的事情。 https://docs.djangoproject.com/en/dev/topics/db/optimization/#understand-queryset-evaluation https://docs.djangoproject.com/en/dev/ref/models /querysets/#django.db.models.query.QuerySet.iterator
不过有些事情还不清楚。
在我的应用程序中,它有点像这样:[我确实有验证等,这里没有写]
可以有 n 个 user_made_filters。对于其中一些,我需要使用 &= 而不是 |=。
问题:- 1]
在此之后,我希望将此 qs 放入缓存中以备后用。我想在不访问数据库的情况下应用所有其他过滤器。就像是
但是当我执行 qs = qs.filter(q_object) 时会发生什么?缓存会被修改吗?我不想要那个。我希望 qs 保持不变,直到我更新它。在这种情况下我该怎么办?
2] 就像我之前说的,我生成 OR'ed 或 ANDed Q 对象,我继续做 qs = qs.filter(q_object)。 我这样做是因为我一次找到了类似类型的过滤器,应用它们然后获取另一种类型的过滤器并继续。我还需要优先考虑一些过滤器。它们将首先应用,然后再应用其余部分。有什么区别:问这个是因为在我的想法中我的qs是类型(a)。
我的意思是当 qs 最终被评估时,django 会按照 (a) 进行评估吗?还是会结合所有过滤器并像 (b) 一样评估它?
问候,
ps- 2-3 小时内无法回复。
django - 无法访问静态资源
我正在使用 Mezzanine、django-compressor 和 amazon-s3。我使用 django-compressor 来压缩 css 文件。我已经将网站部署到 Heroku 并成功存储了静态资源。但是,一段时间后,所有的CSS都丢失了。以下是来自 amazon-s3 的通知:
这是设置中的配置:
请帮我解决这个问题。我找不到根本原因。太感谢了。