【问题标题】:Cronjob Django doesn't work?Cronjob Django 不起作用?
【发布时间】:2013-12-03 07:08:42
【问题描述】:

我已按照以下链接运行 cron 作业:

django - cron

custom management commands

但如果我运行以下命令,所有这些方式都有效:

python manage.py crontab add

   python manage.py runcron

但我不想在没有运行 django 服务器的情况下执行 cron 作业 我的意思是我想运行 django 服务器,它会自动调用某个函数 在服务器运行期间,例如每(例如)5 分钟。

【问题讨论】:

  • 你查看过 django 初始化脚本吗? link
  • 它是否在服务器启动时第一次工作?如果不是,请给我一个简单的例子,每 5 分钟调用一次函数
  • 它允许你守护 django(本质上作为服务运行)你可以在系统启动时启动 django。或者创建一个 bash cron 来检查 django 是否正在运行并启动它。
  • 所以它不能帮助我定期调用一个函数?

标签: python django cron


【解决方案1】:

如果我理解正确,如果 django 没有运行,你就不能使用 django cron;所以创建一个 bash 脚本来检查 django 是否正在运行,如果没有启动它。

MYPROG="myprog"
RESTART="myprog params"
PGREP="/usr/bin/pgrep"
# find myprog pid
$PGREP ${MYPROG}
# if not running
if [ $? -ne 0 ]
then
   $RESTART
fi

那么对于你的 cron:

*/5 * * * * /myscript.sh

这是即兴的,不会根据您的设置进行个性化设置,但它与任何开始一样好。

【讨论】:

  • 不,即使我启动了 django 服务器,我也需要键入 python manage.py runcron 来完成工作
  • 它不会自动完成
  • CRONJOBS = [ ('*/1 * * * *', 'cron.views.my_scheduled_job') ] 到我的 settings.py 但它不起作用
  • 我正在讨论的将启动 django 服务器;我猜你想沿着lines做点什么
  • 是的,我已经这样做了,但是如果我自己输入 manage.py runcrons ,那只能工作一次!
【解决方案2】:

让我看看我是否可以详细说明:

在 Linux 上,您将使用 cron Windows 将使用 at;这些是不要与 Django 混淆的系统服务。它们本质上是计划任务。

自定义管理命令本质上是您将 cron 作业指向的脚本。

您需要对 cron 作业是什么(如果您使用的是 Linux)做一些功课,并了解如何安排重复执行的任务以及如何让它发出自定义命令。这是我对您正在尝试做的事情的理解。如果不是,您需要澄清。

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 2021-07-05
    • 2015-03-31
    • 2018-02-26
    • 1970-01-01
    • 2021-10-24
    • 2020-04-21
    • 2011-03-29
    • 2014-12-26
    相关资源
    最近更新 更多