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_baseindex_hash(): """数据源(存放待验证的公司名称以base_为前缀的mysql表)已提取的索引表,记录最后提取的记录id号 数据格式: { 'mysql数据表名':最后提取的id号 } """ name = "wbsp:gov:baseindex" return rediswrap.get_hash(name)