django-crontab定时任务

 

通过pip安装:

pip安装django-crontab

将它添加到django settings.py中的已安装应用程序中:

INSTALLED_APPS  =' django_crontab '...

现在创建一个应该每5分钟执行一次cron的新方法,在myapp / cron.py中输入:

def  my_scheduled_job():
   传递

现在将其添加到您的settings.py中:

CRONJOBS  = [' * / 5 * * * * '' myapp.cron.my_scheduled_job ' ]

你也可以定义位置和关键字参数让你调用django管理命令:

CRONJOBS  = [' * / 5 * * * * '' myapp.cron.other_scheduled_job ',[ ' arg1 '' arg2 ' ],{ ' verbose '0 }),' 0 4 * * * '' django.core.management.call_command ',[ ' clearsessions ' ]), ]

最后,运行以下命令将所有已定义的作业从CRONJOBS添加到crontab(您正在运行此命令的用户的crontab)中:

python manage.py crontab添加

显示该项目的当前活动工作:

python manage.py crontab显示

删除所有定义的工作很简单:

python manage.py crontab删除

配置

有一些设置变量来定制行为。它们中的每一个都有适当的默认值。如果没有,请随时覆盖。

CRONJOBS
  • 作业列表,每个定义为一个元组:

    • 格式1:
      1. 需要:通常格式的cron时间(更多示例请参见Wikipediacrontab.guru
      2. 必需:该方法的python模块路径
      3. 可选:作业特定的后缀(fe将/ err重定向到文件,默认值:'')
    • 格式2:
      1. 要求:cron计时
      2. 必需:该方法的python模块路径
      3. 可选:该方法的位置参数列表(默认值:[])
      4. 可选:方法的关键字参数的字典(默认:{})
      5. 可选:作业特定后缀(fe将重定向/ err重定向到文件,默认值:'')
  • 注意:每次以任何方式更改CRONJOBS时,运行“python manage.py crontab add”!

  • 默认:[]

  • 例:

    CRONJOBS  = [' * / 5 * * * * '' myapp.cron.my_scheduled_job '), 格式1 ' 0 0 1 * * ' ' myapp.cron.my_scheduled_job ' ' >> /tmp/scheduled_job.log '), 格式2 ' 0 0 1 * * ' ' myapp.cron.other_scheduled_job ',[ ' MyApp的' ]),' 0 0 * * 0 '' django.core.management.call_command ',[ ' dumpdata '' auth ' ],{ ' indent '4 },' > /home/john/backups/last_sunday_auth_backup.json ' ]
CRONTAB_LOCK_JOBS
  • 如果同一作业的旧实例仍在运行,请阻止启动作业
  • 默认:False
  • 自0.5.0起
CRONTAB_EXECUTABLE
  • 你的操作系统的crontab可执行文件的路径
  • 默认:'/ usr / bin / crontab'
CRONTAB_DJANGO_PROJECT_NAME
  • 您的django项目的名称,用于构建manage.py的路径路径,并通过备注标记crontab中的作业以便稍后移除
  • 默认从DJANGO_SETTINGS_MODULE环境变量中读取
CRONTAB_DJANGO_MANAGE_PATH
  • manage.py文件的路径(包括manage.py本身,即'/home/john/web/manage.py')
  • 默认使用DJANGO_PROJECT_NAME构建
CRONTAB_DJANGO_SETTINGS_MODULE
  • 虚线python路径到设置模块以运行该命令
  • 默认值是环境变量中的常见值,不会被覆盖
  • 自0.6.0起
CRONTAB_PYTHON_EXECUTABLE
  • 用于运行预定作业的Python解释器可执行文件的路径
  • 默认使用用于添加作业的解释器可执行文件(通过'python manage.py crontab add')
CRONTAB_COMMAND_PREFIX
  • 在每个作业执行之前,您想要做的或声明的内容。环境变量的好地方。
  • 默认值:''(空字符串)
  • 例如:'STAGE = production'
CRONTAB_COMMAND_SUFFIX
  • 每项工作执行后你想要做的事情。
  • 默认值:''(空字符串)
  • 例如:'2>&1'
CRONTAB_COMMENT
  • 用于标记所删除的已添加的联系线,默认值包括用于区分同一主机和用户上的多个项目的项目名称
  • 默认值:''+ CRONTAB_DJANGO_PROJECT_NAME'的django-crontabs

 

常问问题

  • 我使用这个旧的Django版本(<1.8),不能安装这个软件包。我该怎么办? - 是的,当然更新Django(!)或者 - 因为您似乎熟悉旧的,不支持的版本,请安装此版本的旧版本(它支持django 1.3-1.7):

    pip安装django-crontab == 0.6.0
    
  • 它会与Windows一起工作吗? - 没有

  • 它会在码头工作吗? - 不是马上,你需要启动cron服务。

  • `pyenv`的问题? - 您可能需要在crontab中设置PATH变量。看看#60

  • 在通过“crontab add”进行安装时,我收到了“错误的命令”/“cronfile中的错误”。怎么了? - 也许这是你的cron时间格式,它可以有5或6个字段。检查你的系统是否支持6或在CRONJOBS中定义5。(见#23)

  • 为什么通过cronjob启动时,LOGGING不起作用? - 这可能是关于目前的工作目录。请将FileHandler的文件路径设置为绝对,然后重试。(见#31

 

django-crontab的官方文档:https://github.com/kraiz/django-crontab

猜你喜欢

转载自www.cnblogs.com/xuaijun/p/9198067.html