通过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:
- 需要:通常格式的cron时间(更多示例请参见Wikipedia和crontab.guru)
- 必需:该方法的python模块路径
- 可选:作业特定的后缀(fe将/ err重定向到文件,默认值:'')
- 格式2:
- 要求:cron计时
- 必需:该方法的python模块路径
- 可选:该方法的位置参数列表(默认值:[])
- 可选:方法的关键字参数的字典(默认:{})
- 可选:作业特定后缀(fe将重定向/ err重定向到文件,默认值:'')
- 格式1:
-
注意:每次以任何方式更改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