增加 redis key prefix

This commit is contained in:
Jalin
2019-01-10 14:50:17 +08:00
parent e25dda3a03
commit b323e3d953

View File

@@ -15,23 +15,24 @@ from py12306.log.cluster_log import ClusterLog
@singleton
class Cluster():
KEY_QUERY_COUNT = 'query_count'
KEY_QUERY_LAST_TIME = 'query_last_time'
KEY_CONFIGS = 'configs'
KEY_NODES = 'nodes'
KEY_CHANNEL_LOG = 'channel_log'
KEY_CHANNEL_EVENT = 'channel_even'
KEY_USER_COOKIES = 'user_cookies'
KEY_USER_LAST_HEARTBEAT = 'user_last_heartbeat'
KEY_NODES_ALIVE = 'nodes_alive'
KEY_PREFIX = 'py12306_' # 目前只能手动
KEY_QUERY_COUNT = KEY_PREFIX + 'query_count'
KEY_QUERY_LAST_TIME = KEY_PREFIX + 'query_last_time'
KEY_CONFIGS = KEY_PREFIX + 'configs'
KEY_NODES = KEY_PREFIX + 'nodes'
KEY_CHANNEL_LOG = KEY_PREFIX + 'channel_log'
KEY_CHANNEL_EVENT = KEY_PREFIX + 'channel_even'
KEY_USER_COOKIES = KEY_PREFIX + 'user_cookies'
KEY_USER_LAST_HEARTBEAT = KEY_PREFIX + 'user_last_heartbeat'
KEY_NODES_ALIVE = KEY_PREFIX + 'nodes_alive'
# 锁
KEY_LOCK_INIT_USER = 'lock_init_user' # 暂未使用
KEY_LOCK_DO_ORDER = 'lock_do_order' # 订单锁
KEY_LOCK_INIT_USER = KEY_PREFIX + 'lock_init_user' # 暂未使用
KEY_LOCK_DO_ORDER = KEY_PREFIX + 'lock_do_order' # 订单锁
lock_do_order_time = 60 * 1 # 订单锁超时时间
lock_prefix = 'lock_' # 锁键前缀
lock_info_prefix = 'info_'
lock_prefix = KEY_PREFIX + 'lock_' # 锁键前缀
lock_info_prefix = KEY_PREFIX + 'info_'
KEY_MASTER = 1
KEY_SLAVE = 0
@@ -220,20 +221,20 @@ class Cluster():
if method:
create_thread_and_run(Event(), event_name, Const.IS_TEST, kwargs={'data': data, 'callback': True})
def get_lock(self, key, timeout=1, info={}):
def get_lock(self, key: str, timeout=1, info={}):
timeout = int(time.time()) + timeout
res = self.session.setnx(key, timeout)
if res:
if info: self.session.set_dict(self.lock_info_prefix + key, info) # 存储额外信息
if info: self.session.set_dict(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''), info) # 存储额外信息
return True
return False
def get_lock_info(self, key, default={}):
return self.session.get_dict(self.lock_info_prefix + key, default=default)
return self.session.get_dict(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''), default=default)
def release_lock(self, key):
self.session.delete(key)
self.session.delete(self.lock_info_prefix + key)
self.session.delete(self.lock_info_prefix + key.replace(self.KEY_PREFIX, ''))
def check_locks(self):
locks = self.session.keys(self.lock_prefix + '*')