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/)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java流/下载文件,无需在Spring Boot中保留内存   kotlin/java是否有类似TryParse()的东西?   java Spring引导找不到用户类型的属性ID   java Spring 2到Spring 3的迁移:一个控制器用于多个视图   java包含多个程序包名为“安卓”的库。支持图样可提取'   java spring JPA是否支持自定义值框架?   java转义出基于文本字段的搜索栏   java AAPT:错误:未找到样式属性“安卓:attr/WindowsPlashCreenBackground”   java从文本文件中读取纬度和经度   java哪里可以找到如何使用排序的示例。顺序ignorecase(),其中nullhandling nulls last用于自定义Spring JPA如何提供查询   尝试使用Dialogflow上的Webhook动态给出响应时,java获取Webhook响应错误(206)   如何在java中替换匹配的字符串?   java模拟数学的最大价值。随机的   java Spring RestTemplate GET请求未给出正确响应   春爪哇。lang.IllegalArgumentException   java系统。load()永远不会发生   java剪辑循环不工作   java如何从maven构建中删除staxapi   java ThreadPoolExecutor的排队行为是否可以自定义,以更喜欢创建新线程而不是排队?