django ztask-django的简单后台任务调度程序

django-ztask的Python项目详细描述


重要提示:请阅读
================== < BR>
在0.1.4版中,我们将引入两个主要更改: < BR>< > 1。任务现在有一个"created"datetime字段。添加此命令是为了确保按适当顺序"replayFailed"重播的任务
2。引入了[南方](http://south.aeracode.org/)迁移。 < BR>
如果您已经安装了django ztask-您可以"伪造"第一次迁移,然后运行第二次迁移: < BR>
./manage.py迁移django_ztask--伪0001
./manage.py迁移django_ztask < BR>
如果您没有在Django项目中使用[south](http://south.aeracode.org/),强烈建议您这样做。如果你
不是,您必须手动将"created"字段添加到数据库中。 < BR>
安装
========== < BR>
从[http://www.zeromq.org](http://www.zeromq.org)下载并安装0mq 2.1.3版或更高版本 < BR>
使用pip安装pyzmq和django_ztaskd: < BR>
pip安装pyzmq
pip安装-e git+git@github.com:dmgctrl/django ztask.git egg=django ztask < BR>
将"django_ztask"添加到"settings.py"中的"installed_apps"设置中` < BR>
已安装的应用程序=(
……,
"django_ztask", < BR>< BR>
然后运行'syncdb` < BR>
python manage.py同步数据库 < BR>< BR>
运行服务器
================== < BR>
使用manage.py命令运行django ztask: < BR>
Python管理.py ztaskd < BR>< BR>
命令行参数
< BR>
"ztaskd"命令接受一系列命令行参数: < BR>
-`——诺莱洛德` < BR>
默认情况下,"ztaskd"将使用内置的django重载程序
每当更改python文件时重新加载服务器。经过
在"--noreload"中,它将阻止侦听更改的文件。
(适于在生产中使用。) < BR>
-`-l`或"-loglevel` < BR>
从标准的"关键"、"错误"、"警告"中选择,
"信息"、"调试"或"未设置"。如果这个论点没有通过
在中,默认情况下使用"info"。 < BR>
-`-f`或`--日志文件` < BR>
要将消息记录到的文件。默认情况下,将记录所有消息
发送到"stdout"` < BR>
-`——重播失败` < BR>
如果命令失败的次数超过
`ztaskd_retry_count`(详见下文),任务是
记录为失败。传入"--replayfailed"将导致
重新运行失败的任务。 < BR>< BR>
设置
-- < BR>
有几个设置可以放在"settings.py"文件中
您的django项目。这些是设置及其默认值 < BR>
ztaskd_url='TCP://127.0.0.1:5555' < BR>
默认情况下,"ztaskd"将在TCP上运行,侦听127.0.0.1端口5555。 < BR>
ztaskd_always_eager=错误 < BR>
如果设置为"true",则所有"async"和"after"任务都将在进程内运行,并且
未发送到"ztaskd"进程。适合任务调试。 < BR>
ztaskd_disabled=错误 < BR>
如果已设置,则将记录所有任务,但不执行。这种设置通常是
在测试运行期间使用。如果在运行前设置"ztaskd_disabled"
"python manage.py test",任务将被记录,但不会执行。 < BR>
ztaskd_retry_count=5 < BR>
任务在被认为失败之前应重新尝试的次数。 < BR>
ztaskd_retry_after=5之后 < BR>
任务重试之间等待的秒数。 < BR>
Ztaskd_on_负载=() < BR>
这是一个可调用的列表,可以是类,也可以是函数,在服务器第一次调用时调用
开始。这是为了在启动时支持几个可能的django设置方案而实现的。
`ztask`-例如,请参阅下面名为**使用Johnny缓存实现**的部分。 < BR>< BR>
投产
---- < BR>< BR>建议在生产中运行的方法是
在"rc.local"文件中添加以下内容。这个例子已经在
ubuntu 10.04和ubuntu 10.10: < BR>< BR>/BIH/BASH-E
推送/var/www/path/to/site
sudo-u www data python manage.py ztaskd--noreload-f/var/log/ztaskd.log&;
流行音乐 < BR>< BR>
在任务中生成函数
============================ < BR>
装饰器和函数扩展使任务能够运行。
与某些解决方案不同,任务可以在任何位置的任何文件中。
导入文件时,"ztaskd"将注册任务以运行。 < BR>
**重要提示:所有函数及其参数都必须能够pickle。** < BR>
([在此处阅读有关pickling的更多信息](http://docs.python.org/tutorial/inputoutput.html pickle模块) < BR>
建议最好不要传递django模型对象
对于任务,输入模型的id或主键,然后重新获取
任务函数中的对象。 < BR>
任务装饰器
------ < BR>
来自django_ztask.decorators导入任务 < BR>
`@task()`decorator将把任何正常函数转换为
"django_ztask"任务(如果使用其中一个函数扩展调用)。 < BR>
函数扩展
------ < BR>
任何函数都可以通过以下三种方式之一调用: < BR>
-`func(*参数,*kwargs)` < BR>
调用函数通常会绕过decorator并直接调用函数 < BR>
-`func.async(*args,**kwargs)` < BR>
使用`.async'调用函数将导致异步调用函数任务
在ztaskd服务器上。对于向后兼容,'.delay'将执行与'.async'相同的操作,但不推荐使用。 < BR>
-`func.after(秒,*args,**kwargs)` < BR>
这将导致任务被发送到"ztaskd"服务器,该服务器将等待"秒"`
执行时间。 < BR>< BR> 实例
< BR>
来自django_ztask.decorators导入任务 < BR>
@task()
定义打印(要打印的内容):
打印要打印的内容 < BR>
如果uuu name_uuuuu='\uuu main_uuu': < BR>
直接调用函数
打印此('hello world!') < BR>
异步调用函数
print_this.async('这将打印到ztaskd日志') < BR>
异步调用函数
延迟5秒后
打印这个。在(5'这将打印到ztaskd日志'之后) < BR>< BR>
使用Johnny Cache实现
============================== < BR>
因为[johnny cache](http://packages.python.org/johnny-cache/)monkey修补了所有django查询编译器,
对django ztask中未正确修补的模型所做的任何更改在缓存之前都不会反映到您的站点上
已清除。因为django ztask不关心中间件,所以必须将johnny cache的查询缓存
中间件在"ztaskd_on_load"设置中作为可调用的。 < BR>
Ztaskd_装载=(
"johnny.middleware.querycachemiddleware",
… < BR>< BR>
如果您想执行此操作和其他操作,可以编写自己的函数,并将其传递给
"ztaskd_on_load",如本例所示: < BR>
**myutilities.py** < BR>
定义ztaskd_startup_stuff():
''
每次ztaskd服务器运行的内容
已启动或重新加载
''
来自Johnny导入中间件
中间件.querycachemiddleware()
…#其他安装材料 < BR>
**设置.py** < BR>
Ztaskd_装载=(
"myutilities.ztaskd_startup_的东西",
… < BR>< BR>< BR>
待办事项和错误
==============
请参见:[http://github.com/dmgctrl/django ztask/问题](http://github.com/dmgctrl/django-ztask/issues)

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

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束