怎麼在用django框架的python程式中跑定時任務呢?用系統裡面的crontab來跑的話任務成功或失敗以及任務返回的結果都無法傳送給程式,造成定時任務與程式的割裂,不方便進行控制。
想要實現定時任務,必須要有乙個daemon程序一直在後台執行,如果python程式是用uwsgi啟動的,使用uwsgi就可以實現
uwsgi實現定時任務的python介面詳細請參考官方文件
把下面的**加入uwsgi的入口程式中,通常可以寫到django程式的wsgi.py裡面:
import uwsgi
# 將具體的cron job分到另乙個檔案中寫,便於維護
from cron_job import *
for job_id, job in enumerate(jobs):
uwsgi.register_signal(job_id, "", job['name'])
if len(job['time']) == 1:
uwsgi.add_timer(job_id, job['time'][0])
else:
uwsgi.add_cron(job_id, job['time'][0], job['time'][1], job['time'][2], job['time'][3], job['time'][4])
以下是cron_job.py,增加、刪除定時任務只需要修改這個python指令碼:
import time
defcron_print_time
(signum):
isotimeformat='%y-%m-%d %x'
print time.strftime(isotimeformat, time.localtime())
defcron_print_hello
(signum):
print
"hello"
jobs = [ ,
,
]
說明:
uwsgi有兩種定時任務方式
這兩個函式的第乙個引數均為job_id
只有在使用uwsgi啟動的時候才生效,用python內建的web服務啟動時候import uwsgi
會報找不到uwsgi模組的錯誤
也可以像官方文件一樣把定時任務寫到uwsgi的配置檔案中,但這樣不太符合前提,不能和python程式無縫地契合
linux定時任務 at定時任務
at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...
at定時任務
at的守護程序每60秒檢查一次作業佇列,有作業時檢查作業,時間恰好達到,則執行作業。前提 保證atd程序已經啟動,檢查atd程序是否啟動 ps ef grep atd。atd的命令格式 at 選項 時間 ctrl d 結束at命令的輸入。選項 m 任務完成後給使用者傳送郵件,沒有標準輸出。i atg...
at定時任務
1 at是只執行一次,執行完後任務刪除。at的守護程序atd會以後臺模式執行,檢查作業佇列來執行。2 預設 atd每60秒巡邏一次,有作業時候,檢查作業時間,如果和當前時間一樣,就執行任務 3 在使用at命令的時候,一定要保證他的守護者atd程序的啟動。用ps ef grep atd來檢視atd是否...