數據庫連接有沒有一種方法來禁用Django的REST框架的默認行爲,使其不查找後端數據庫?在我的項目中,我有幾個不需要數據庫的簡單API。但在Django背後,嘗試與數據庫連接,在響應時間內增加了額外的毫秒數。Django的rest_framework.views如何跳過簡單的REST API
請注意,我有CONN_MAX_AGE在我的設置,以便在最好的情況下,我不會看到MySQLdb的痕跡:連接,但它仍然會做,因爲它的默認行爲的其他-SQL。
我希望如果有人已經面臨這個問題,知道一個solution.For更深入的瞭解,我也貼我的我的簡單API的New Relic的報告的痕跡。
from rest_framework.views import View
class ServerStatusTestView(View):
def get(self, request):
return HttpResponse('Some Response')
- MySQLdb的:連接==> 65毫秒
- WSGI /響應==> 21.1ms
- 其他 - SQL ==> 11.3ms
- django.core.urlresolvers:RegexURLResolver。解決==> .8ms
- django.http.response:HttpResponse.close ==> .5ms
- django.middleware.csrf:CsrfViewMiddleware.process_view ==> 5ms的
- ServerStatusTestView ===> .2ms
- django.middleware.common:CommonMiddleware.process_request ==> 0.1
編輯-1添加>>我剛纔注意到,可能由於遠程地發生「django.contrib.sessions.middleware.SessionMiddleware」,其中Django試圖將缺省會話保存在數據庫中。我爲django管理表單添加了它。所以我想我可能需要添加一些中間件來繞過我的簡單API,但我仍然在尋找一個合適的東西,就像我在簡單視圖頂部添加的一個裝飾器,它不測試會話。所以仍然在尋找建議!
編輯2加>>我對會議中間件的想法是錯誤的,因爲我使用簡單的查看未(ApiView),只是爲了確認起見,我禁用了所有中間件的看到影響,但一個簡單的請求仍與數據庫建立連接。更有趣的是我的設置中有2個數據庫,當我加載測試我的簡單API調用時,我的主數據庫也從其他數據庫獲得連接。 (我通過「SHOW PROCESSLIST」命令檢查我直接從MySQL而負載測試運行)
我想你不要與實施測試只settings.py它沒有MySQL連接定義? – mdurant 2014-09-02 15:41:46
是的,我在生產測試這個,但是我剛剛看到它可能是Django的默認會話行爲,因爲它正在發生,我也要編輯我的父郵件。 – 2014-09-02 15:54:25