rabin há 7 anos atrás
pai
commit
e72521e6c9
1 ficheiros alterados com 26 adições e 17 exclusões
  1. 26 17
      cron.py

+ 26 - 17
cron.py

@@ -1,11 +1,12 @@
 # -*- coding: utf-8 -*-
 """
-    demeter web
-    name:cron.py
-    author:rabin
+	demeter web
+	name:cron.py
+	author:rabin
 """
 import time
 from demeter.core import *
+from multiprocessing import Process
 from gevent import monkey; monkey.patch_socket()
 import gevent
 timeSleep = 10
@@ -15,23 +16,31 @@ def run(site, product):
 	service = Demeter.service(site['name'])
 	service.init(site)
 	service.start()
-	gevent.sleep(timeSleep)
 
-def handle():
+def handle(data):
+	task = []
+	for v in data:
+		product.status(v['id'], 2)
+		site = product.getSite(v['site_id'])
+		task.append(gevent.spawn(run, site, [v]))
+	gevent.joinall(task)
+		
+def start(number = 1):
 	while 1:
-		task = []
 		product = Demeter.service('product')
 		data = product.get()
+		task = []
+		i = 0
 		if data:
 			for v in data:
-				product.status(v['id'], 2)
-				site = product.getSite(v['site_id'])
-				task.append(gevent.spawn(run, site, [v]))
-			try:
-				gevent.joinall(task)
-			except BaseException as e:
-				print e
-		gevent.sleep(timeSleep)
-		
-
-handle()
+				i += 1
+				task.append(v)
+				if i == number:
+					p = Process(target=handle, args=(task,))
+					p.start()
+					task = []
+					i = 0
+			if task != []:
+				p = Process(target=handle, args=(task,))
+				p.start()
+start()