2016-09-16 60 views
2

當Django啓動並將其放入內存(Redis)以供所有應用程序使用時,如何從MySQL數據庫加載資源。Django在啓動時加載資源

我看到這個[https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready]

class MyAppConfig(AppConfig): 
     def ready(self): 

但他們沒有提及使用現成函數內部數據庫的連接。我的網站啓動時怎麼辦?

我可以在裏面設置緩存值嗎?

from django.core.cache import cache 
cache.set() 

回答

1

由於您只加載到Redis的,而不是創造的在內存在您的網站上舉行,共享所有的應用程序模型的實例,也許最好的辦法是使用custom management command

第二種解決方案是創建一個Django CLI,如張貼e4c5除權文檔上:

假設你已經建立了Django項目,並設置文件是在一個名爲主要的應用程序,這是你如何初始化代碼

import os, sys 

# Setup environ 
sys.path.append(os.getcwd()) 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "main.settings") 

# Setup django 
import django 
django.setup() 

# rest of your imports go here 

from main.models import MyModel 

# normal python code that makes use of Django models go here 

for obj in MyModel.objects.all(): 
    print obj 

以上可以作爲

python main/cli.py 
執行

由於您使用的是redis,您是否真的需要將內容存儲在memcache中?但是,如果您需要,也可以通過CLI進行操作

+0

有什麼方法可以將值存儲到應用程序上下文中。並由所有用戶訪問。 ?即使我們有,當我們部署到Apache,wsgi實例可能會重新啓動。所以我想我需要爲memcahe存儲所有用戶頻繁變化的實時數據。 –

+0

所以你的命令/ CLI我們必須單獨運行?我們如何將所有東西整合到一個Web項目中,並在Apache啓動時啓動。 –

+0

看完整的一點是,這與apache重啓並不相關。如果您要從緩存中過期,應該從代碼中修改項目的位置執行該操作,而不是等待apache重新啓動。 – e4c5