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@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程