新的请求我有一个Django应用程序服务于uWSGI进程在nginx服务器上。此应用程序使用tastypie进行API管理,并使用memcached缓存一些模板块。Django应用程序似乎使用旧的QuerySet结果基于date.today()筛选
我的问题是API请求不断返回旧结果。
我按日期
queryset = Event.objects.filter(status='P').exclude(date_end__lt=date.today()).order_by('-featured', 'date_end')
过滤我的查询,但返回的对象是每天都一样。
为了调试的目的,我还为date.today
添加了date.today
,它正确输出当前日期。
当我重新启动uWSGI进程时,QuerySet被正确评估。
所以我排除DB和memcached这个问题。对我来说,似乎某种QuerySet缓存是由tastypie或uWSGI进程完成的。
我读过tastypie caching documentation,试过NoCache类没有成功。
我也读过Django doc about QuerySet caching但不是每个请求后应该抛出QuerySet对象?
UPDATE
我检查响应头和客户端缓存60秒一小时的最大年龄后过期。
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Mon, 18 Feb 2013 10:47:03 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Last-Modified: Mon, 18 Feb 2013 10:44:56 GMT
Expires: Mon, 18 Feb 2013 10:54:56 GMT
Cache-Control: max-age=600
UPDATE
我改变了我的查询作为建议
queryset = Event.objects.filter(status='P').exclude(date_end__lt=date.today).order_by('-featured', 'date_end')
但结果还是一样。
这里是一个JSON输出示例
{
"date_begin": "11/17/2012",
"date_end": "11/17/2012",
"description": "Presentazione del libro di Daniela Giusto",
"featured": false,
"location": "Libreria antiquaria Romeo Prampolini",
"resource_uri": "/api/v1/event/213/",
"time": "18:00:00",
"title": "Un insolito Jules Verne. Tradurre umorismo e fantasia",
"today": "2012-11-18",
}
date_begin
和date_end
在为JavaScript兼容性以不同的方式被格式化。
你是我的英雄! – Luca