123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # -*- coding: utf-8 -*-
- """
- demeter web
- name:admin.py
- author:rabin
- """
- import time
- from demeter.core import *
- timeSleep = 10
- # 批量控制的队列 这块有点乱,但时间太紧,只有两天时间,以后改造优化
- class Queue(object):
- def run(self):
- self.handle()
- time.sleep(timeSleep)
- def handle(self):
- mul_model = Demeter.model('device_mul')
- device_model = Demeter.model('device_info')
- model = Demeter.model('device_mul_queue')
- model.status = 1
- data = model.select(type='fetchone', order='inorder asc,udate asc,hardware_id asc')
- service = Demeter.service('device')
- # 查看当前有没有正在执行的设备,如果有,不能继续执行了
- msg = service.notice('timeout')
- device_model.oper = True
- device_model.exp.nq(msg)
- device_model.hardware_type = 3
- device = device_model.select(type='fetchone')
- if not device and data and not data['operstate']:
- service.switch(data['device_id'], switch=data['value'], mul=False, queue=data['id'])
- model.id = data['id']
- model.update(operstate=True)
- #mul_model.id = data['mul_id']
- #mul_model.update(oper='')
- # 将执行完成的进行清理
- mul_model.oper.nq('')
- data = mul_model.select()
- if data:
- for v in data:
- devicesNum = len(tuple(eval(v['devices'])))
- model.status.ins((2,3))
- cur = Demeter.time() - 10
- model.operdate.assgin(cur, '<=')
- queue = model.select()
- num = len(queue)
- if num == devicesNum:
- errorNum = 0
- model.mul_id = v['id']
- model.update(status=4)
- for qv in queue:
- if qv['status'] == 3:
- errorNum = errorNum + 1
- mul_model.id = v['id']
- if errorNum == devicesNum:
- mul_model.update(oper='', value=v['old'])
- else:
- mul_model.update(oper='')
|