为什么django cron在我的应用程序中不起作用

时间:2019-02-14 11:18:47

标签: django cron django-cron

我试图根据官方文档使用django_crons进行一些设置,甚至为了进行调试,我在project / app_name / crone.py中的do函数中使用了print语句

enter code herfrom django_cron import CronJobBase, Schedule
from cricket.models import *
from cricket.service import cricket_player_performance_update

class CricketScoreUpdate(CronJobBase):
    RUN_EVERY_MINS = 2 # every 2 minutes
    MIN_NUM_FAILURES = 1

    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
    code = 'project_name.cricket.cron.CricketScoreUpdate'   

    def do(self):
        print("ya")
        pass 

我也在setup.py文件中设置

FAILED_RUNS_CRONJOB_EMAIL_PREFIX = "[Server check]: "
CRON_CLASSES = [
    "cricket.cron.CricketScoreUpdate",
    "django_cron.cron.FailedRunsNotificationCronJob",
] 

我也编辑crontab

*/2 * * * *  source /home/ubuntu/.bashrc && home/abhi/venv/bin/python && source /home/abhi/venv/bin/activate && python /home/abhi/leaguesx/manage.py runcrons > /home/abhi/leaguesx/cronjob.log

但是当我运行python manage.py runcrons时,它什么也不会打印

我该怎么办?提前感谢

1 个答案:

答案 0 :(得分:0)

尝试这段代码并运行它,如果您在日志文件(10)中看到cronjob.log,则它可以正常工作,然后在def do中可以实现您的逻辑。

cricket/cron/CricketScoreUpdate.py

from django_cron import CronJobBase, Schedule


class CricketScoreUpdate(CronJobBase):
    RUN_EVERY_MINS = 2 # every 2 minutes
    MIN_NUM_FAILURES = 1

    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
    code = 'cricket.cron.CricketScoreUpdate'   

    def do(self):
        x = 5 + 5
        print("If 10, cron works>>>", x)

cricket/Settings.py

CRON_CLASSES = [
    "cricket.cron.CricketScoreUpdate",
    "django_cron.cron.FailedRunsNotificationCronJob",
]