def run(self): first = True # 连接MySQL数据库 db = mysql_db.Mysql() cursor = db._cursor while True: sql_query = "SELECT * FROM market_schedule WHERE next_run_time < '%d'" % time.time( ) try: results = cursor.execute(sql_query) except BaseException as ex: logging.error(ex) break results = cursor.fetchall() for row in results: reqs = row['reqs'].split(',') for req in reqs: req_str = row['req_tpl'] % req if first and row['req_first_tpl'] != None: req_str = row['req_first_tpl'] % req req_data = json.loads(req_str) ev = events.Event(row['action'], str(1), req_data) logging.debug(row['action'] + ':' + req_str) if self.service.ctx != None: r = self.service.ctx['app'].evt_mng.pub_event(ev) next_time = time.time() + 60 if row['freq'] == 'd': next_time = time.time() + 60 * 60 * 24 sql_update = "update market_schedule set last_run_time=%d, next_run_time=%d where id='%s'" % ( time.time(), next_time, row['id']) try: cursor.execute(sql_update) db.commit() except BaseException as ex: logging.error(ex) db.rollback() break if first: first = False r = self.task_process() if r: break time.sleep(1) db.dispose()
def stop(self): ev = events.Event('quit', str(1), "quit request") self.WSQueue.put(ev) service.Service.stop(self)
def stop(self): self.before_stop() logging.debug("service[" + self.name + "] stop ...") ev = events.Event('quit', str(1), "quit request") self.eventQueue.put(ev)
def __init__(self, ctx, services): self.ctx = ctx self.services = services def start(self): for k in self.services.keys(): service = self.services[k] service.before_start() service.start() service.before_stop() def stop(self): for k in self.services.keys(): service = self.services[k] service.before_stop() service.stop() if __name__ == "__main__": services = {'test': Service(None, "test")} mgr = ServiceMgr(None, services) mgr.start() for num in range(1, 20): ev = events.Event('data', str(num), "event:" + str(num)) services['test'].eventQueue.put(ev) time.sleep(1) mgr.stop()