前言:
大家是否需要一个强度大点的任务处理框架,比如临时发送大量的通知邮件,需要做大量的cpu计算,需要做大量的部署,需要做xxxx。 好嘞,下面看看jug的介绍及使用文档。
介绍一个简单易用的任务处理框架,名字叫Jug,它是一个基于任务的并行处理框架,采用 Python 编写,可立马实现多任务处理,及在不同的机器上运行同一个任务,使用 NFS 做文件系统的通讯;也可在使用同一台服务器的多CPU运行同一任务。这里不仅可以用nfs,也可以用redis。
个人觉得他比celery相比,在于接口不好用。用celery可以轻易做成异步,当然jug的优势在于轻易的分布式,和派生多进程,以及任务不会冲突。当然这些东西也可以自己开发实现。 看个人喜好了。
我这里的测试代码很简单,就是获取一个列表,然后用jug运行,大家会注意到,你不管开了多少个进程,他们的任务都不会冲突,有点类似redis队列。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#coding:utf-
8
#from xiaorui.cc
from jug
import
TaskGenerator
import
time
import
os,sys
@TaskGenerator
def is_prime(n):
print
'现在进行的是任务: %s'
%n
time.sleep(
1
)
ltime =
int
(time.time())
print ltime
time.sleep(
1
)
return
True
plist=[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
'w1'
,
'w2'
,
'w3'
,
'w4'
,
'w5'
,
'w6'
,
'd1'
,
'd2'
,
'd3'
,
'd4'
,
'd5'
,
'd6'
]
primes100 = map(is_prime,plist)
print 'o
|
在第一台服务器处理的结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[root@
67
var]
# jug execute s.py
ok
现在进行的是任务:
1
1399001613
现在进行的是任务:
2
1399001615
现在进行的是任务:
3
1399001617
现在进行的是任务:
4
1399001619
现在进行的是任务:
6
1399001621
现在进行的是任务:
8
1399001623
现在进行的是任务:
10
1399001625
现在进行的是任务: w2
1399001627
现在进行的是任务: w4
1399001629
现在进行的是任务: w6
1399001632
现在进行的是任务: d2
1399001634
现在进行的是任务: d4
1399001636
现在进行的是任务: d6
|
再另一台服务器测试的结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
xiaorui.cc
[root@
110
var]
# jug execute s.py
ok
现在进行的是任务:
5
1399001620
现在进行的是任务:
7
1399001623
现在进行的是任务:
9
1399001625
现在进行的是任务: w1
1399001627
现在进行的是任务: w3
1399001629
现在进行的是任务: w5
1399001631
现在进行的是任务: d1
1399001633
现在进行的是任务: d3
1399001635
现在进行的是任务: d5
1399001637
Executed Loaded Task name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
9
3
s.is_prime
......................................................................................................................................
9
3
Total
|
可以看到,他们在完成任务后,会把记录hash的方式写入记录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[root@
67
var
]# ll s.jugdata/
总用量
96
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
0b
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
12
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
14
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
1d
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
25
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
4d
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
4f
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
58
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
59
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
6f
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
75
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
79
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
7c
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
8d
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
96
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
a7
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
a9
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
b7
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
be
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
d1
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
d6
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
f7
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
locks
drwxr-xr-x
2
root root
4096
5
月
2
11
:
33
tempfiles
|
原文:http://rfyiamcool.blog.51cto.com/1030776/1405532
这里介绍的比较简单,想看详细的,请到官网看:
https://pythonhosted.org/Jug/tutorial.html
本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1405532,如需转载请自行联系原作者