def match_players(): queue = RedisQueue("all_players") _redis = StrictRedis(**REDIS_QUEUE_KWARGS) while True: if queue.qsize() < 2: time.sleep(0.5) continue left, right = queue.get(), queue.get() game_id = str(uuid4()) _redis.publish(left, game_id) _redis.publish(right, game_id)
def __init__(self, name, queue_name, process_number=1, redis_host=None, redis_port=None): """ 消费者类构造器 :param name: (str) 名称 :param queue_name: (str) redis队列名称 :param redis_host: (str) redis 服务器域名 :param redis_port: (int) 端口号 :return: """ self.process_number = process_number if not os.path.exists("./log"): os.makedirs("./log") self.customer_logging = get_logger("./log/%s" % name + "_%d" % self.process_number) self.customer_name = name self.last_file = "%s_last_key_%d.txt" % (self.customer_name, self.process_number) self.customer_queue_name = queue_name self.customer_redis_host = redis_host self.customer_redis_port = redis_port self.customer_queue_conn = RedisQueue.getredisQueuev2( queue_name, redis_host)
def __init__(self, name, queue_names, process_number=1, redis_host=None, redis_port=None): """ 生产者类构造器 :param name: (str) 生产者名称 :param queue_names: (str) redis队列名称列表 :param redis_host: (str) redis 服务器域名 :param redis_port: (int) redis服务器端口号 :return: """ self.process_number = process_number self.product_name = name if not os.path.exists("./log"): os.makedirs("./log") self.product_logging = get_logger("./log/%s" % name + "_%d" % self.process_number) self.product_queue_names = queue_names self.product_redis_host = redis_host self.product_redis_port = redis_port self.product_conns = list() self.bloomfilter_mode = False for queue_name in queue_names: queue_conn = RedisQueue.getredisQueuev2(queue_name, redis_host, redis_port) self.product_conns.append(queue_conn)
def append_bottom(self, keywords_dict): while True: try: keywords_str = json.dumps(keywords_dict) self.key_queue_conn.put(keywords_str) return except Exception as e: print u'重新插入redis队尾异常%s' % e time.sleep(5) try: #重新连接 self.company_name_queue = RedisQueue.getredisQueue("%s:keywords" % self.key_queue_name,redis_host= self.redis_host,redis_port=self.redis_port) continue except Exception as e1: self.logging.error(u"连接Redis队列失败。错误信息:%s" % e1) time.sleep(600) continue
def main(): value = u'后端开发,移动互联网,成都' value_list = value.split(',') value_dict = {} if len(value_list) == 3: value_dict['key_words'] = value_list[0] value_dict['hy'] = value_list[1] value_dict['city'] = value_list[2] else: sys.exit(1) while True: try: value_dict_str = json.dumps(value_dict) queue = RedisQueue.getredisQueuev2("%s:keywords"% queue_list[0],config.redis_host,config.redis_port, redis_password = None) queue.insert(value_dict_str) break except Exception as e: print u'insert redis failed! %s' % e
def pop_key_words(self): while True: try: keywords_dict = self.key_queue_conn.get(timeout=60) if keywords_dict is None: raise Exception(u'队列中没有内容返回') keywords_dict = keywords_dict.strip() if len(keywords_dict) < 1: raise Exception(u'队列中数据异常') return keywords_dict except Exception as e: print u'从队列中%s取key,value对异常 %s' % (self.key_queue_name, e) time.sleep(60*5) try: #重新连接 self.company_name_queue = RedisQueue.getredisQueue("%s:keywords" % self.key_queue_name,redis_host= self.redis_host,redis_port=self.redis_port) continue except Exception as e1: self.logging.error(u"连接Redis队列失败。错误信息:%s" % e1) time.sleep(600) continue
def __init__(self, key_queue_name, name,queue_name,process_number=1,redis_host=None,redis_port=None): Producer.__init__(self,name, queue_name, process_number, redis_host = redis_host, redis_port = redis_port) self.key_queue_name = key_queue_name self.key_queue_conn = RedisQueue.getredisQueue("%s:keywords" % key_queue_name, redis_host = redis_host,redis_port = redis_port, redis_password = None) self.redis_host = redis_host self.redis_port = redis_port