def main():
    try:
        while True:
            test()
            time.sleep(0.5)
    except(KeyboardInterrupt):
        print('main thread(%f):stop'%_interval_timer())
        print('main thread(%f):stopped'%_interval_timer())
Example #2
0
def test1(log):
    import time
    tt1=TThread(seq=1,log=log)
    try:
        while True:
            log.debug('main _thread(%f):start',_interval_timer())
            tt1.running_start()
            time.sleep(0.4)
            tt1.running_stop()
            tt1.join(1)
            time.sleep(1)
    except(KeyboardInterrupt):
        log.debug('main _thread(%f):stop timer',_interval_timer())
        tt1.running_stop()
        tt1.join(1)
        #tt2.stop()
        #tt3.stop()
        log.debug('main _thread(%f):stopped',_interval_timer())
Example #3
0
def test2(workingLine,log):
    log.info('test for all start (%f)',_interval_timer())
    workingLine=WorkQueue(name="test_worker",log=log)
    workingLine.wq_start()
    import time
    seq=0
    while seq < 10:
        seq += 1
        log.info("Add a work : %d"%seq)
        workingLine.QueueWork(MyWork(seq=seq,name="testwork"))
    workingLine.wq_pause()  # restart .........
    log.info('main thread(%f):paused',_interval_timer())
    time.sleep(5)
    workingLine.wq_resume()  # restart .........
    log.info('main thread(%f):resumed',_interval_timer())
    while seq < 100:
        seq += 1
        log.info("Add a work : %d"%seq)
        workingLine.QueueWork(MyWork(seq=seq,name="testwork"))
        time.sleep(1)
Example #4
0
 def item_get_top_n(self, item, size, track_type, retry_on_exception=True):
     re_dict={}
     try:
         bt=_interval_timer()
         sql = r"select * from track_data where tracktype_id=%d and name = '%s' order by tracktime desc limit %d"\
               % (track_type,item,size)
         n = self._cursor.execute(sql)
         for i in range(n):
             db_data = self._cursor.fetchone()
             db_item = TrackData.GetInstance(db_data)
             re_dict[db_item] = db_item #???
         interval = _interval_timer()-bt
         self.log.debug("interval:item_get_top_n(%s,%d) %f" % (item,len(re_dict),interval) )
     except OperationalError as e:
         self._handle_exception(e)
         if retry_on_exception:
             self.item_get_top_n(item,size,track_type,False)
     except Exception as e:
         self.log.exception(e)
     finally:
         return re_dict
Example #5
0
 def do(self,worker=None):
     self.times += 1
     if self._work_param:
         for i in range(10):
             c = self._work_param.cursor()
             if not c:
                 self.log.debug("failed on get cursor")
             else:
                 self.log.debug("get cursor succed")
     else:
         self.log.debug("conn is None")
     self.log.info("[%04d][%03d] working .... %f",self.seq,self.times,_interval_timer() )
Example #6
0
def test1(workingLine,log):
    log.info('test for process of work buffer is full (%f)',_interval_timer())
    workingLine=WorkQueue(name="test_worker",log=log)
    workingLine.wq_start()
    seq=0
    while seq < 1000:
        for i in range(20):
            seq += 1
            log.info("Add a work : %d",seq)
            wr=MyRedoableWork(seq=seq,period=10,name="testwork")
            workingLine.QueueWork(wr)
        time.sleep(1)
Example #7
0
def test3(workingLine,log):
    log.info('test for priority work start (%f)',_interval_timer())
    # test for priority work
    workingLine=WorkQueue(priority_support=True,name="test_worker",log=log)
    workingLine.wq_start()
    seq=1000
    while seq > 0:
        for i in range(20):
            seq -= 1
            log.info("Add a work : %d",seq)
            wr=MyPriorityWork(seq=seq,log=log,name="testwork")
            workingLine.QueueWork(wr)
        time.sleep(1)
Example #8
0
 def run(self):
     while self.IsRunning:
         try:
             tb = _interval_timer()
             if not self.works.empty() and not self.IsPaused:
                 work = self.works.get(block=True,timeout=0.5)
                 work._do(worker=self) # working ...
                 #if __debug__: self.log.debug("[%s] work(%s) func out"%(self.getName(),work._work_name))
                 if self._redoable_support and not work._done:
                     if self.doneWorks.full():
                         self.doneWorks.get() # drop top when buffer is full
                         self.log.warn("[%s] Work buffer is full,drop top work.", self.getName())
                     #if __debug__: self.log.warn("[%s] add a redo work."%work._work_name )
                     self.doneWorks.put(work)
             else:
                 te = _interval_timer()
                 sleep_interval= 0.05 - te + tb
                 if sleep_interval > 0:
                     time.sleep(sleep_interval)
         except Exception as e:
             self.log.exception(e)
             time.sleep(0.5)
Example #9
0
def test_workqueue(log):
    wq = WorkQueue(name = "work_queue", redoable_support = True, log = log)
    try:
        seq = 0
        wq.Start()
        for i in range(10):
            tgw = TestWork(seq=seq)
            wq.QueueWork(work=tgw)
            seq += 1
        while True:
            log.info("wq is running ................")
            time.sleep(1)

        log.info('main thread(%f):stop', _interval_timer())
        wq.Stop()
        log.info('main thread(%f):stopped', _interval_timer())
    except(KeyboardInterrupt):
        log.info('main thread(%f): User canceled by Ctrl-c', _interval_timer())
    finally:
        log.info('main thread(%f):stop', _interval_timer())
        wq.Stop()
        log.info('main thread(%f):stopped', _interval_timer())
Example #10
0
 def _get_item_list_by_sql(self,sql, retry_on_exception=True):
     try:
         bt=_interval_timer()
         n = self._cursor.execute(sql)
         res = self._cursor.fetchall()
         res_dict = {}
         for each in res:
             if len(each) > 2:
                 ts = TrackStatus(each)
                 res_dict[ts.shipment_name] = ts
             else:
                 self.log.error( "result:%d" % len(each) )
         interval = _interval_timer()-bt
         self.log.debug("interval:_get_item_list_by_sql %f" % interval)
         return res_dict
     except OperationalError as e:
         self._handle_exception(e)
         if retry_on_exception:
             self._get_item_list_by_sql(sql,False)
     except Exception as e:
         self.log.exception(e)
     finally:
         pass
Example #11
0
def test2(log):
    import time
    tt1=TThread(seq=1,log=log)
    #tt2=TThread(2)
    #tt3=TThread(3)

    log.debug('main _thread(%f):start',_interval_timer())
    tt1.running_start()
    #tt2.start()
    #tt3.start()
    try:
        while True:
            if not tt1.IsPaused:
                tt1.running_pause()
            else:
                tt1.running_resume()
            time.sleep(2)
    except(KeyboardInterrupt):
        log.debug('main _thread(%f):stop timer',_interval_timer())
        tt1.running_stop()
        #tt2.stop()
        #tt3.stop()
        log.debug('main _thread(%f):stopped',_interval_timer())
Example #12
0
    # init log
    log = util.initlog("./log/"+ os.path.split(__file__)[1]+".log")
    # init db conn
    dbpool = PooledDB.PooledDB(
        MySQLdb,11,22,11,22,False,host='localhost',user='******',passwd='123',db='tracking', charset='utf8' )
    conn = dbpool.connection()
    # init dbworkshop
    dbws = dbworkshop.DBWorkshop(dbpool=dbpool,minsize=2,log=log)

    display_str="""test Begin[%s]"""
    log.info(display_str%(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))))
    try:
        # 开始工作 ===============================================================
        dbws.StartWork()
        dhl_test(dbws,conn,log)

        # 工作完成 ===============================================================

        while True:
            time.sleep(3)
        log.info('main thread(%s):stopped'%
                 time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
    except(KeyboardInterrupt):
        print('main thread(%f): User canceled by Ctrl-c'%_interval_timer())
    finally:
        print('main thread(%f):stop'%_interval_timer())
        if dbws.IsAlive:
            dbws.StopWork(timeout=30)
        log.info('main thread(%s):stopped'%
                 time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
Example #13
0
def test3(ws):
    # test stop work function
    ws.StartWork()
    time.sleep(1)
    ws.QueueWork(TWork(seq=1,period=3,name="dbworkshop_tester"))
    while True:
        time.sleep(1)


if __name__ == '__main__':
    import vavava.util
    dbpool = PooledDB(
        MySQLdb,20,50,20,400,False,
        host='localhost',user='******',passwd='123',db='tracking',
        charset='utf8'
    )
    log = vavava.util.initlog("./log/test_dbworkshop.log")
    ws = DBWorkshop(dbpool=dbpool,log=log)
    try:
        test3(ws)
        #test2(ws)
    except(KeyboardInterrupt):
        log.info('main thread(%f): User canceled by Ctrl-c',_interval_timer())
    finally:
        log.info('main thread(%f):stop',_interval_timer())
        ws.StopWork()
        log.info('main thread(%f):stopped',_interval_timer())


Example #14
0
 def do(self,worker):
     import time
     self.log.info("[%05d] Hello DB, am %s !!!!!!!  %f", self.seq,worker.getName(), _interval_timer())
Example #15
0
        log.info("Add a work : %d"%seq)
        workingLine.QueueWork(MyWork(seq=seq,name="testwork"))
        time.sleep(1)

def test3(workingLine,log):
    log.info('test for priority work start (%f)',_interval_timer())
    # test for priority work
    workingLine=WorkQueue(priority_support=True,name="test_worker",log=log)
    workingLine.wq_start()
    seq=1000
    while seq > 0:
        for i in range(20):
            seq -= 1
            log.info("Add a work : %d",seq)
            wr=MyPriorityWork(seq=seq,log=log,name="testwork")
            workingLine.QueueWork(wr)
        time.sleep(1)

if __name__ == '__main__':
    import vavava.util
    log = vavava.util.initlog("./log/test_workqueue.log")
    workingLine = WorkQueue()
    try:
        test1(workingLine,log)
    except(KeyboardInterrupt):
        log.info('main thread(%f):stop',_interval_timer())
        workingLine.wq_stop(timeout=5,flush=True)
        log.info('main thread(%f):stopped',_interval_timer())