def queue_mnt(): """公司称名数据分配进程。 公司名称的基本数据表命名格式 base_省份简称。 自动提取以base_为前缀的公司基本表中的数据当对应的队列元素小于 设定的阀值queue_threshold时。 """ db = mysqlwrap.get_db() index_rd = rediswrap.get_hash('wbsp:gov:baseindex') while 1: try: sql = "SHOW TABLES LIKE 'base_%'" res, desc = db.query(sql) if res==0 and desc: for row in desc: tb = list(row.values())[0] q = rediswrap.get_queue('wbsp:gov:queue.%s'%tb) #print('tb:%s q_len:%s' % (tb,q.__len__())) if q.__len__() >= queue_threshold: continue index = index_rd.get(tb,0) #print('tb:%s index:%s' % (tb,index)) sql = "select id,name from %s where id >%s limit %s" % (tb,index,rows_limit) #print(sql) rs, ds = db.query(sql) if rs==0 and ds: id = 0 for d in ds: id = d['id'] q.push(d['name']) index_rd.set(tb,id) except Exception as e: traceback.print_exc() time.sleep(10)
def get_tmp_queue(): """ 存放插入数据库失败的记录 """ name = "wbsp:gov:queue.tmp" return rediswrap.get_queue(name)
def get_row_queue(tbname): """存放待验证的公司名称的队列 @name 以base_为前缀的mysql表 """ name = "wbsp:gov:queue.base_" + tbname return rediswrap.get_queue(name)