2014-06-16 44 views
-1

在我的申請中,用戶擁有與其每月訂購相關的積分(積分)。沒有芹菜的Django中的計劃任務?

我想每月在特定日期爲每個用戶自動填充積分。 請注意,對於每個用戶,這個日期是不同的(取決於訂閱的日期)

我聽說關於計劃任務芹菜,它似乎滿足我的需求,但也許有點矯枉過正。有沒有簡單的(也可以嵌入在Django中)來做到這一點?

+1

您可以使用cron(linux)或windows任務計劃程序(或任何它所調用的)來安排自定義腳本,但詢問推薦的工具是否與SO無關。 – knbk

回答

3

您可以創建一個服務,它可以檢查您的記錄並執行您需要的操作。

這是一個文件,該文件是在項目的根目錄下,像這樣的簡單的例子:

  • manage.py
  • my_service.py
  • PROJECT_NAME

所以源my_service.py的代碼可以是:

#!/usr/bin/env python 
import os 
import sys 
import time 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings") 

form django.contrib.auth.models import User 
while True: 
    rows = User.objects.filter(created___startswith=...) 
    if not rows: 
     print 'sleep...' 
     time.sleep(10) 
     continue 
    [you actions should be here] 

然後通過python my_service.py命令在後臺運行它。

或者你可以添加這個腳本放到cron作業(如果是這樣,那麼這部分將改變):

注意:如果你想將其添加到cron作業。你應該改變while True有限的循環,像這樣:

form django.contrib.auth.models import User 
rows = User.objects.filter(created___startswith=...) 
if not rows: 
    sys.exit(1) 
while R in rows: 
    [you actions should be here] 

現在在你的cron作業將它每1小時運行,看看到this link它有很多關於它的例子。

注意:這只是一個例子。您應該將該型號名稱更改爲您的型號名稱和查詢。

+0

感謝您的這個想法。不是非常非常優雅,因爲它會在我的數據庫上每隔XX秒查詢一次,不過它的優點很簡單:)一個好的開始。 –

+0

@DavidW。我在幾個項目中,系統應該處理任何用戶輸入,它們每秒都在'entry'表中。我嘗試過這些方法。 ;) – Mortezaipo