コード例 #1
0
    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()
コード例 #2
0
 def stop(self):
     ev = events.Event('quit', str(1), "quit request")
     self.WSQueue.put(ev)
     service.Service.stop(self)
コード例 #3
0
    def stop(self):
        self.before_stop()
        logging.debug("service[" + self.name + "] stop ...")

        ev = events.Event('quit', str(1), "quit request")
        self.eventQueue.put(ev)
コード例 #4
0
    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()