2

我正在使用 django_cron 来安排作业,当我使用 python manage.py runcrons 时,这项工作很好。但是在 ubuntu cron list 中添加 cron 作业后,作业没有执行。我的setting.py是:

CRON_CLASSES = [
    "home.cron.HomeCronJob",
]

FAILED_RUNS_CRONJOB_EMAIL_PREFIX = []
INSTALLED_APPS = (
    'django.contrib.auth',
    '..................'
    'django_cron',
)

我的 cron.py 文件是:

from django_cron import CronJobBase, Schedule
from home.management.commands.auto_renueva import republishAds
class HomeCronJob(CronJobBase):
    RUN_EVERY_MINS = 2
    MIN_NUM_FAILURES = 2
    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
    code = 'home.home_cron_job'

    def do(self):
        republishAds()

然后我创建了一个 shell 脚本来运行这个作业,cron.sh:

#! /bin/bash
source /home/cis/ENV/muna/bin/activate
python /home/cis/DjangoLive/Newmunda/mund2anuncios/manage.py runcrons
deactivate

我在 ubuntu cron 文件中添加的代码是:

*/1 * * * *  /home/cis/DjangoLive/Newmunda/mund2anuncios/crons.sh >> /home/cis/Desktop/crons.log 3 >> /home/cis/Desktop/cron_errors.log

请建议我在这里做错了什么。

提前致谢

4

1 回答 1

0

作为猜测

python /home/cis/DjangoLive/Newmunda/mund2anuncios/manage.py runcrons

将失败,因为 PATH 未在 cron 环境中设置。您应该包含 python 解释器的完整路径。

cron 作业中的其他常见错误是对脚本没有执行权限。通常 cron 错误会通过电子邮件发送给 root,因此您应该了解有关 root 邮箱错误的更多信息

于 2014-03-03T15:08:19.940 回答