2016-03-02 76 views
0

我有一個django應用程序,它將採取從MySQL的備份取決於給定的參數。 我有一個觀點,這將得到以下一form.The用戶參數的參數:如何在django中安排任務?

1.mysql用戶名

2.mysql密碼

3.database名

4 .backup path

現在我將參數作爲參數傳遞給我寫的函數,它將採用mysql備份。現在我需要將這個作爲cronjobs類的東西與芹菜或其他類似對此。 這是我的看法:

def home(request): 
    if request.method == 'POST': 
     form = myform(request.POST) 
     if form.is_valid(): 
      mysqlusername = form.cleaned_data['mysqlusername'] 
      mysqlpassword = form.cleaned_data['mysqlpassword'] 
      database_name = form.cleaned_data['database_name'] 
      backuppath = form.cleaend_data['backuppath'] 

      backupfunction(mysqlusername, mysqlpassword, database_name, backkuppath) 
    else: 
      form = myform() 

def backupfunction(mysqlusername, mysqlpassword, database_name, backuppath): 
      (code to take backup) 
+0

除非您在某處存儲用戶名/密碼,否則cronjob將無法獲得所需的參數。你是否將證書存儲在某個地方? – karthikr

+0

目前上面的代碼工作正常,但我沒有使用cronjobs我使用os.system()採取備份 – pythonnoob

回答

0

您可以使用django芹菜。其中提供調度程序以及異步任務。詳情 https://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/

您必須在您的應用程序中創建一個task.py文件。並在該文件中寫入您的功能

from celery import shared_task 

@shared_task() 
def testschduler(): 
    print "scdule task" 

之後,只需去管理面板創建一個crowntab工作。在數據庫中。這將由celryd自動讀取。

+1

雖然建議是好的,你應該添加一個最小的代碼示例如何設置簡單的任務 - 其他方式您的答案可以標記爲「鏈接唯一答案」 –

+0

好吧,事情是我需要從用戶意味着從一個表格 – pythonnoob

+0

給予crontab輸入django admin提供表單來創建crontab。你可以重寫或使用它。用芹菜足夠用了 –