Django项目的定期任务管理。
django-periodicall的Python项目详细描述
周期性允许您在python中定义周期性任务,然后根据需要运行它们(考虑cron作业)。
goals
----
1。任务及其调度应该在python中定义,而不是在crontab或数据库中定义。
2.应该有多种方法来触发任务,但是只有一种语法来定义它们。仅仅因为在一台服务器上用cron作业触发任务并不意味着你总能做到这一点。当你做不到的时候,你不应该重写所有的代码,只要改变一个设置。系统应该高度灵活,但是……
4.…最常见的日程安排(每小时、每天等)应该有捷径。
5.系统应尝试正常恢复,但…
6。…如果有任何问题,它也应该提醒管理员。
installation
----
1。` pip定期安装git+https://github.com/hzdg/django.git 35; egg=django`
2。在settings.py.中将"定期"添加到"已安装的应用程序"中
3。` python manage.py syncdb`
usage
----
定义和调度任务
`````````````````````````````````````````````````````````````
周期性地为您安排周期性任务提供了一些方法。最简单的方法是使用包含的装饰器:
…代码块::python
from periodical.decorators import*
@hourly()
def my_task():
print'do something!'
@每隔(分钟=45)
定义我的其他任务():
打印"每隔45分钟做其他事情!"
但是,您也可以定义任务类:
…代码块::python
from periodically.tasks import periodictask
from periodically import register
from periodically.schedules import daily
'
计划任务。
register.task(mytask(),daily())
tasks.py`.
**默认后端不会自动运行您的任务**,因此您需要使用"run tasks"管理命令告诉它。通常,您会使用cronjob(或类似的)来完成这项工作。例如,在crontab文件中放置以下行将检查每五分钟需要运行的任务:
…代码块::python
*/5****python/path/to/manage.py runtasks
一个项目甚至可以使用多个后端!
代码块::python
periodically={
…
'调度程序':{
'特殊':{
'后端':'myapp.myspecialbackend',
},
},
}
代码块::python
@hourly(backend="special")
def do_something():
打印"doing something!"
此设置非常适用于使用特定后端计划特定任务,但如果您发现要更改所有任务使用的后端,则更容易覆盖默认值:
。代码块::python
periodically={
…
'调度程序':{
'默认':{
'后端':'myapp.myspecialbackend',
},
},
}
KS默认使用"myapp.myspecialbackend"。
backend groups
````````````````````
有时创建后端组很方便。一个很好的例子是,当您有几个不同的后端时,它们都应该由cron作业触发。下面是如何将后端添加到"settings.py"文件中的组:
…代码块::python
ther':{
"backend":"myapp.anotherbackend"、
}、
}、
}
现在您可以使用"run tasks"管理命令的"-group"选项有选择地运行任务:
。代码块::python
python manage.py runtasks--group cron
代码块::python
*/5****python/path/to/manage.py runtasks--group cron
tip
`````
>如果计划使用cron作业触发任务执行,最好总是创建一个"cron"组。这样,如果您添加了新的非cron后端,就不必更改crontab;只需将新后端添加到"cron"组即可。
logging
``````````
要启用此功能,只需在"settings.py"文件中添加一个"定期"记录器:
…代码块::python
logging={
…
}
},
"日志记录器":{
…
添加以下内容以启用定期日志记录。
"定期":{
"处理程序":["邮件管理员"],
"级别":"错误",
"传播":true,
}、
}、
}
这是一个相对简单的设置,每当周期性任务失败时,它都会向站点管理员发送电子邮件,但django可以执行更多操作。有关更多信息,请查看[django文档](https://docs.djangoproject.com/en/dev/topics/logging/)。
goals
----
1。任务及其调度应该在python中定义,而不是在crontab或数据库中定义。
2.应该有多种方法来触发任务,但是只有一种语法来定义它们。仅仅因为在一台服务器上用cron作业触发任务并不意味着你总能做到这一点。当你做不到的时候,你不应该重写所有的代码,只要改变一个设置。系统应该高度灵活,但是……
4.…最常见的日程安排(每小时、每天等)应该有捷径。
5.系统应尝试正常恢复,但…
6。…如果有任何问题,它也应该提醒管理员。
installation
----
1。` pip定期安装git+https://github.com/hzdg/django.git 35; egg=django`
2。在settings.py.中将"定期"添加到"已安装的应用程序"中
3。` python manage.py syncdb`
usage
----
定义和调度任务
`````````````````````````````````````````````````````````````
周期性地为您安排周期性任务提供了一些方法。最简单的方法是使用包含的装饰器:
…代码块::python
from periodical.decorators import*
@hourly()
def my_task():
print'do something!'
@每隔(分钟=45)
定义我的其他任务():
打印"每隔45分钟做其他事情!"
但是,您也可以定义任务类:
…代码块::python
from periodically.tasks import periodictask
from periodically import register
from periodically.schedules import daily
'
计划任务。
register.task(mytask(),daily())
tasks.py`.
**默认后端不会自动运行您的任务**,因此您需要使用"run tasks"管理命令告诉它。通常,您会使用cronjob(或类似的)来完成这项工作。例如,在crontab文件中放置以下行将检查每五分钟需要运行的任务:
…代码块::python
*/5****python/path/to/manage.py runtasks
一个项目甚至可以使用多个后端!
代码块::python
periodically={
…
'调度程序':{
'特殊':{
'后端':'myapp.myspecialbackend',
},
},
}
代码块::python
@hourly(backend="special")
def do_something():
打印"doing something!"
此设置非常适用于使用特定后端计划特定任务,但如果您发现要更改所有任务使用的后端,则更容易覆盖默认值:
。代码块::python
periodically={
…
'调度程序':{
'默认':{
'后端':'myapp.myspecialbackend',
},
},
}
KS默认使用"myapp.myspecialbackend"。
backend groups
````````````````````
有时创建后端组很方便。一个很好的例子是,当您有几个不同的后端时,它们都应该由cron作业触发。下面是如何将后端添加到"settings.py"文件中的组:
…代码块::python
ther':{
"backend":"myapp.anotherbackend"、
}、
}、
}
现在您可以使用"run tasks"管理命令的"-group"选项有选择地运行任务:
。代码块::python
python manage.py runtasks--group cron
代码块::python
*/5****python/path/to/manage.py runtasks--group cron
tip
`````
>如果计划使用cron作业触发任务执行,最好总是创建一个"cron"组。这样,如果您添加了新的非cron后端,就不必更改crontab;只需将新后端添加到"cron"组即可。
logging
``````````
要启用此功能,只需在"settings.py"文件中添加一个"定期"记录器:
…代码块::python
logging={
…
}
},
"日志记录器":{
…
添加以下内容以启用定期日志记录。
"定期":{
"处理程序":["邮件管理员"],
"级别":"错误",
"传播":true,
}、
}、
}
这是一个相对简单的设置,每当周期性任务失败时,它都会向站点管理员发送电子邮件,但django可以执行更多操作。有关更多信息,请查看[django文档](https://docs.djangoproject.com/en/dev/topics/logging/)。