2016-01-21 41 views
0

我的問題是我想構建一個Django網站,它在我的django應用程序的後端有一個定期自動更新的數據庫。 例如,我想新的記錄添加到我的數據庫每5秒,我寫我的代碼的models.py如下:如何在Django中構建動態數據庫(自主操作)?

import datetime 
from django.db import models 
import time 

class Descriptors(models.Model): 
    updated = models.DateTimeField(auto_now=True) 

def add_new_record(): 
    Descriptor = Descriptors(updated = datetime.datetime.now()).save() 
    time.sleep(5) 
while True: 
    add_new_record() 

此代碼創建在後臺記錄,當我運行python manage.py startserver。但是,此代碼將堅持在不啓動服務器的情況下創建記錄。那麼是否有任何想法我可以解決這個問題,或者我應該參考在Django的後端製作一個動態數據庫的教程?謝謝。

+0

那麼,你是不是想在不啓動服務器的情況下繼續創建數據庫條目?我不知道你爲什麼想這樣做,但爲什麼不運行一個cronjob 5分鐘的時間間隔來運行你的python腳本? – ishaan

+0

是的,我確實想啓動我的服務器,同時我希望底層的代碼在後臺運行。因爲,在我的真實代碼中,我實際上是從網站定期獲取股票價格(每5秒說一次)。而且,這個提取的股票價格將被導入到我的數據庫中,然後在我的django網站上再次呈現並顯示。 – weefwefwqg3

+1

然後一個cronjob將是你最好的朋友。雖然我的知識是有限的,但克倫只是爲了這些目的而設計的。 – ishaan

回答

0

做出一個單獨的管理命令:

# yourapp/management/commands/create_descriptor.py 

import datetime 
from django.core.management import BaseCommand 

class Command(BaseCommand): 
    def handle(self, *args, **kwargs): 
     Descriptors.objects.create(updated = datetime.datetime.now()) 

併線到你的crontab(如果你在Unix兼容的系統):

* * * * * /path/to/your/manage.py create_descriptor 

但是請注意,該vanilla cron無法比每分鐘更快地調用命令,因此如果您需要更高的時間分辨率,您可能需要諸如Celery's beat之類的東西。