新的請求我有一個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