用uwsgi跑定時任務

2021-07-06 06:37:40 字數 1227 閱讀 5653

怎麼在用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是否...