【问题标题】:Example Cron with Django使用 Django 的示例 Cron
【发布时间】:2018-01-12 02:00:56
【问题描述】:

我在互联网上搜索了 Django 中计划作业的工作示例。但我只能找到如何去做,但没有给出例子。有人可以分享一个使用 cron 运行计划任务的 Django 框架的工作示例吗?

【问题讨论】:

  • 你需要什么例子?您已经掌握了有关制作管理命令的完整说明,而且 cron 本身也有很好的文档记录。你哪里出了问题?
  • @DanielRoseman 在 django 文档中说如何创建自定义命令,但我需要的是在调用“python manage.py runserver”时使计划任务运行。另外,对于我发布的其他两个模块,我已经按照他们在相应官方网站上的说明进行操作,但它显然不起作用
  • 我不明白你在说什么。调度和运行服务器之间的联系是什么? (完全不考虑 runserver 仅用于开发的事实。)另外,如果您在尝试某些东西时遇到错误,您应该发布它们。
  • @DanielRoseman 我没有收到任何错误,这就是我无法调试的原因。目前我正在使用“runserver”测试应用程序。我想继续测试,但现在我想添加一个计划任务。我希望在启动应用程序时开始该任务,也就是在调用“runserver”命令时

标签: python django cron scheduled-tasks


【解决方案1】:

首先创建一个custom admin command。此命令将用于将任务添加到 crontab。这是我的自定义命令的示例:

cron.py

from django.core.management.base import BaseCommand, CommandError
import os
from crontab import CronTab

class Command(BaseCommand):
    help = 'Cron testing'

    def add_arguments(self, parser):
        pass

    def handle(self, *args, **options):
        #init cron
        cron = CronTab(user='your_username')

        #add new cron job
        job = cron.new(command='python <path_to>/example.py >>/tmp/out.txt 2>&1')

        #job settings
        job.minute.every(1)

        cron.write()

之后,如果您看一下下面的代码,就会每 1 分钟调用一次 Python 脚本。创建一个example.py 文件并在其中添加您希望每 1 分钟创建一次的功能。

一切准备好添加预定的作业,只需从项目django目录调用以下命令:

python manage.py cron

要验证 cron 作业是否已成功添加,请调用以下命令:

crontab -l

您应该会看到如下内容:

* * * * * <path_to>/example.py

要调试 example.py,只需调用这个命令:

tail -f /tmp/out.txt

【讨论】:

    【解决方案2】:

    您应该尝试在使用 django 应用程序的任何内容的 python 脚本的开头添加以下代码块。

    import sys, os, django
    # append root folder of django project
    # could be solved with a relative path like os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..') which corresponds to the parent folder of the actual file.
    sys.path.append('/path/to/django-project/')
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    django.setup()
    

    那么你应该可以像这样在 cronjob 中调用这个脚本

    * * * * * user /path/to/python /path/to/script
    

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 2018-01-30
      • 2013-06-14
      • 2011-01-17
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多