|
@@ -1,11 +1,12 @@
|
|
|
|
|
|
"""
|
|
|
- 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()
|