簡體   English   中英

django crontab 作業不起作用

[英]django crontab job does not work

我有一個非常簡單的 django 項目,它由一個名為 Quote 的應用程序模型組成。

該應用程序只有一個 cron 作業,它每 1 分鍾執行一次以從數據庫中獲取隨機報價,並使用 notify-send 命令顯示帶有該報價的通知。

我正在使用 django-crontab 來實現這個目標。

cron.py 非常簡單,如下所示

from random import randint
from models import Quote
import subprocess, time, os

def notify():
    latestQuote = Quote.objects.all().order_by("-id")[0]
    max_id = latestQuote.id
    quote = Quote.objects.get(pk=randint(1,max_id))
    subprocess.Popen(['notify-send',quote.quote])
    time.sleep(1)

這是設置模塊中的 cron 設置

CRONJOBS = [('*/1 * * * *', 'core.cron.notify')]

執行./manage crontab add ,一個 cron 命令被添加到我的 crontab 中,如下所示

*/1 * * * * /usr/bin/python /home/anas/storage/motinder/manage.py crontab run 5ade4dc167538a33802640eeb92219ad # django-cronjobs for motinder

如果我從系統 crontab 執行命令,通知顯示成功但 cron 作業不會自動執行。

編輯

我更改了 cron.py 文件中的代碼以發送靜態通知而不是從數據庫獲取報價。 檢查下面

from random import randint
from models import Quote
import subprocess, time, os

def notify():
    #latestQuote = Quote.objects.all().order_by("-id")[0]
    #max_id = latestQuote.id
    #quote = Quote.objects.get(pk=randint(1,max_id))
    #subprocess.Popen(['notify-send',quote.quote])
    subprocess.Popen(['notify-send',"TEST"])
    time.sleep(1)

不幸的是,情況是一樣的。

您是否嘗試在 Python 腳本之上使用正確的 Shebang 行並使用chmod +x使您的文件可執行?

#!/usr/bin/env python

from random import randint
from models import Quote
import subprocess, time, os

def notify():
    latestQuote = Quote.objects.all().order_by("-id")[0]
    max_id = latestQuote.id
    quote = Quote.objects.get(pk=randint(1,max_id))
    subprocess.Popen(['notify-send',quote.quote])
    time.sleep(1)

'notify-send'在哪里? cron與您的登錄 shell 不在同一環境中運行,因此 python 可能不知道在哪里可以找到它。

如果Popen()調用失敗,您可以通過強制發生某些事情來幫助自己。 目前,什么都不會發生,因為您沒有捕獲它的任何輸出。

(此外,除非有充分的理由,否則不等待Popen調用完成通常是不好的。)

subprocess有各種實用功能可以提供幫助。 試試這個:

def notify():
    subprocess.check_call(['notify-send',"TEST"])

這將阻塞直到進程完成,並引發一個異常,如果它失敗,它將被打印到stderr ,例如,因為它找不到'notify-send' ,它應該轉到/var/log/cron (或可能是/var/log/syslog在您的系統上?),這將讓您進一步調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM