예제 #1
0
파일: RabbitMod.py 프로젝트: fycheung/misc
 def kill(self):
     '''关闭'''
     if hasattr(self.send_let, 'kill'):
         self.send_let.kill()
     #将队列中未发送的消息,放入数据库
     while not self._queue.empty():
         msg = self._queue.get()
         db.insert('tb_delay_mq', 
                   {'msg':str(msg), 'CreateTime':time.time()})
예제 #2
0
 def kill(self):
     '''关闭'''
     if hasattr(self.send_let, 'kill'):
         self.send_let.kill()
     #将队列中未发送的消息,放入数据库
     while not self._queue.empty():
         msg = self._queue.get()
         db.insert('tb_delay_mq', {
             'msg': str(msg),
             'CreateTime': time.time()
         })
예제 #3
0
파일: CfgReader.py 프로젝트: fycheung/misc
    def load_cfg(self):
        '''将配置读入字典'''
        for table in self.__class__.tables:
            self.__class__.cfgs[table] = {}
            
            results = db.query('DESC %s' % table)
            if not results:
                continue
            pris = [result['Field'] for result in results if result['Key'] == 'PRI']

            results = db.out_rows(table)
            if not results: #读表失败
                continue
            for result in results:
                row_key = tuple([result[pri] for pri in pris])
                if len(row_key) == 1:
                    row_key = row_key[0]
                self.__class__.cfgs[table][row_key] = result
예제 #4
0
파일: HonourMod.py 프로젝트: fycheung/misc
def getWeekHonour(userid, serverid, timestamp=None):
    '''获取本周所得的荣誉'''
    timestamp = timestamp if timestamp else time.time()
    fields = '*'
    where = 'UserId=%s AND ServerId=%s' % (userid, serverid)
    record = db.out_fields(_honour_table, fields, where)
    if record is None:
        #没有该用户的记录,插入。
        initdata = {'UserId':userid, "ServerId":serverid, 'HonourNum':0,
               "LastChangeDate":datetime.date.fromtimestamp(timestamp)}
        db.insert(_honour_table, initdata)
        return 0
    lastchangedate, honornum = record['LastChangeDate'], record['HonourNum']
    monday = getMondayDate(timestamp)
    
    if lastchangedate >= monday:
        return honornum
    return 0
예제 #5
0
    def load_cfg(self):
        '''将配置读入字典'''
        for table in self.__class__.tables:
            self.__class__.cfgs[table] = {}

            results = db.query('DESC %s' % table)
            if not results:
                continue
            pris = [
                result['Field'] for result in results if result['Key'] == 'PRI'
            ]

            results = db.out_rows(table)
            if not results:  #读表失败
                continue
            for result in results:
                row_key = tuple([result[pri] for pri in pris])
                if len(row_key) == 1:
                    row_key = row_key[0]
                self.__class__.cfgs[table][row_key] = result
예제 #6
0
    def loop(self):
        delay_num = 0
        while 1:
            if delay_num:  #如果数据库内有延迟的消息,先发送。
                try:
                    delay_mqs = db.out_rows('tb_delay_mq')
                    for delay_mq in delay_mqs:
                        try:
                            msg = self.chk_msg(delay_mq['msg'])
                        except Exception:
                            pass
                        else:
                            self._send(msg)
                        finally:
                            stat = db.execute('tb_delay_mq',
                                              'id=%s' % delay_mq['id'])
                            if not stat:
                                raise TypeError
                            delay_num -= 1
                except TypeError:
                    print '数据库出错'
                except Exception:  #发送消息失败
                    self.conn = None

            msg = self._queue.get()  #发送队列里的消息
            try:
                msg = self.chk_msg(msg)
            except Exception:  #错误的消息
                continue
            try:
                self._send(msg)
            except Exception:
                stat = db.insert('tb_delay_mq', {
                    'msg': str(msg),
                    'CreateTime': time.time()
                })
                if not stat:
                    self._queue.put(msg)
                self.conn = None
                delay_num += 1
예제 #7
0
def getWeekHonour(userid, serverid, timestamp=None):
    '''获取本周所得的荣誉'''
    timestamp = timestamp if timestamp else time.time()
    fields = '*'
    where = 'UserId=%s AND ServerId=%s' % (userid, serverid)
    record = db.out_fields(_honour_table, fields, where)
    if record is None:
        #没有该用户的记录,插入。
        initdata = {
            'UserId': userid,
            "ServerId": serverid,
            'HonourNum': 0,
            "LastChangeDate": datetime.date.fromtimestamp(timestamp)
        }
        db.insert(_honour_table, initdata)
        return 0
    lastchangedate, honornum = record['LastChangeDate'], record['HonourNum']
    monday = getMondayDate(timestamp)

    if lastchangedate >= monday:
        return honornum
    return 0
예제 #8
0
파일: RabbitMod.py 프로젝트: fycheung/misc
    def loop(self):
        delay_num = 0
        while 1:
            if delay_num: #如果数据库内有延迟的消息,先发送。
                try:
                    delay_mqs = db.out_rows('tb_delay_mq')
                    for delay_mq in delay_mqs:
                        try:
                            msg = self.chk_msg(delay_mq['msg'])
                        except Exception:
                            pass
                        else:
                            self._send(msg)
                        finally:
                            stat = db.execute('tb_delay_mq', 'id=%s'%delay_mq['id'])
                            if not stat:
                                raise TypeError
                            delay_num -= 1
                except TypeError:
                    print '数据库出错'
                except Exception: #发送消息失败
                    self.conn = None

            msg = self._queue.get() #发送队列里的消息
            try:
                msg = self.chk_msg(msg)
            except Exception: #错误的消息
                continue
            try:
                self._send(msg)
            except Exception:
                stat = db.insert('tb_delay_mq', 
                          {'msg':str(msg), 'CreateTime':time.time()})
                if not stat:
                    self._queue.put(msg)
                self.conn = None
                delay_num += 1
예제 #9
0
파일: HonourMod.py 프로젝트: fycheung/misc
def addHonour(userid, serverid, addnum, timestamp=None):
    '''增加荣誉'''
    if addnum <= 0:
        return #增加的荣誉值小于等于0,直接返回。
    timestamp = timestamp if timestamp else time.time()
    honournum = getWeekHonour(userid, serverid, timestamp)
    honournum += addnum
    honournum = 2000 if honournum > 2000 else honournum #每周所能获得的荣誉上限是2000
    newdata = {"LastChangeDate":datetime.date.fromtimestamp(timestamp),
               "HonourNum":honournum}
    where = 'UserId=%s AND ServerId=%s' % (userid, serverid)
    stat = db.update(_honour_table, newdata, where)
    if not stat:
        return stat
    return honournum #返回增加后的荣誉值
예제 #10
0
def addHonour(userid, serverid, addnum, timestamp=None):
    '''增加荣誉'''
    if addnum <= 0:
        return  #增加的荣誉值小于等于0,直接返回。
    timestamp = timestamp if timestamp else time.time()
    honournum = getWeekHonour(userid, serverid, timestamp)
    honournum += addnum
    honournum = 2000 if honournum > 2000 else honournum  #每周所能获得的荣誉上限是2000
    newdata = {
        "LastChangeDate": datetime.date.fromtimestamp(timestamp),
        "HonourNum": honournum
    }
    where = 'UserId=%s AND ServerId=%s' % (userid, serverid)
    stat = db.update(_honour_table, newdata, where)
    if not stat:
        return stat
    return honournum  #返回增加后的荣誉值