def print_configs(cls): # 打印配置 self = cls() enable = '已开启' disable = '未开启' self.add_quick_log('**** 当前配置 ****') self.add_quick_log('多线程查询: {}'.format( get_true_false_text(Config().QUERY_JOB_THREAD_ENABLED, enable, disable))) self.add_quick_log('语音验证码: {}'.format( get_true_false_text(Config().NOTIFICATION_BY_VOICE_CODE, enable, disable))) self.add_quick_log('查询间隔: {} 秒'.format(Config().QUERY_INTERVAL)) self.add_quick_log('用户心跳检测间隔: {} 秒'.format( Config().USER_HEARTBEAT_INTERVAL)) if Config().is_cluster_enabled(): from py12306.cluster.cluster import Cluster self.add_quick_log('分布式查询: {}'.format( get_true_false_text(Config().is_cluster_enabled(), enable, enable))) self.add_quick_log('节点名称: {}'.format(Cluster().node_name)) self.add_quick_log('节点是否主节点: {}'.format( get_true_false_text(Config().is_master(), '是', '否'))) self.add_quick_log('子节点提升为主节点: {}'.format( get_true_false_text(Config().NODE_SLAVE_CAN_BE_MASTER, enable, disable))) self.add_quick_log() self.flush() return self
def print_configs(cls): # 打印配置 self = cls() enable = '已开启' disable = '未开启' self.add_quick_log('**** 当前配置 ****') self.add_quick_log('多线程查询: {}'.format(get_true_false_text(Config().QUERY_JOB_THREAD_ENABLED, enable, disable))) self.add_quick_log('CDN 状态: {}'.format(get_true_false_text(Config().CDN_ENABLED, enable, disable))).flush() self.add_quick_log('通知状态:') self.add_quick_log( '语音验证码: {}'.format(get_true_false_text(Config().NOTIFICATION_BY_VOICE_CODE, enable, disable))) self.add_quick_log('邮件通知: {}'.format(get_true_false_text(Config().EMAIL_ENABLED, enable, disable))) self.add_quick_log('钉钉通知: {}'.format(get_true_false_text(Config().DINGTALK_ENABLED, enable, disable))) self.add_quick_log('Telegram通知: {}'.format(get_true_false_text(Config().TELEGRAM_ENABLED, enable, disable))) self.add_quick_log('ServerChan通知: {}'.format(get_true_false_text(Config().SERVERCHAN_ENABLED, enable, disable))) self.add_quick_log('Bark通知: {}'.format(get_true_false_text(Config().BARK_ENABLED, enable, disable))) self.add_quick_log( 'PushBear通知: {}'.format(get_true_false_text(Config().PUSHBEAR_ENABLED, enable, disable))).flush(sep='\t\t') self.add_quick_log('查询间隔: {} 秒'.format(Config().QUERY_INTERVAL)) self.add_quick_log('用户心跳检测间隔: {} 秒'.format(Config().USER_HEARTBEAT_INTERVAL)) self.add_quick_log('WEB 管理页面: {}'.format(get_true_false_text(Config().WEB_ENABLE, enable, disable))) if Config().is_cluster_enabled(): from py12306.cluster.cluster import Cluster self.add_quick_log('分布式查询: {}'.format(get_true_false_text(Config().is_cluster_enabled(), enable, enable))) self.add_quick_log('节点名称: {}'.format(Cluster().node_name)) self.add_quick_log('节点是否主节点: {}'.format(get_true_false_text(Config().is_master(), '是', '否'))) self.add_quick_log( '子节点提升为主节点: {}'.format(get_true_false_text(Config().NODE_SLAVE_CAN_BE_MASTER, enable, disable))) self.add_quick_log() self.flush() return self
def __init__(self): self.session = Request() self.request_device_id() self.cluster = Cluster() self.update_query_interval() self.update_query_jobs() self.get_query_api_type()
def __init__(self, info, query): self.cluster = Cluster() self.left_dates = info.get('left_dates') # 多车站已放在下面处理 # self.left_station = info.get('stations').get('left') # self.arrive_station = info.get('stations').get('arrive') # self.left_station_code = Station.get_station_key_by_name(self.left_station) # self.arrive_station_code = Station.get_station_key_by_name(self.arrive_station) self.stations = info.get('stations') self.stations = [self.stations] if isinstance(self.stations, dict) else self.stations self.job_name = info.get( 'job_name', '{} -> {}'.format(self.stations[0]['left'], self.stations[0]['arrive'])) self.account_key = str(info.get('account_key')) self.allow_seats = info.get('seats') self.allow_train_numbers = info.get('train_numbers') self.members = info.get('members') self.member_num = len(self.members) self.member_num_take = self.member_num self.allow_less_member = bool(info.get('allow_less_member')) self.interval = query.interval self.query = query
def flush(cls, sep='\n', end='\n', file=None, exit=False, publish=True): from py12306.cluster.cluster import Cluster self = cls() logs = self.get_logs() # 输出到文件 if file == None and Config().OUT_PUT_LOG_TO_FILE_ENABLED and not Const.IS_TEST: # TODO 文件无法写入友好提示 file = open(Config().OUT_PUT_LOG_TO_FILE_PATH, 'a', encoding='utf-8') if not file: file = None # 输出日志到各个节点 if publish and self.quick_log and Config().is_cluster_enabled() and Cluster().is_ready: # f = io.StringIO() with redirect_stdout(f): print(*logs, sep=sep, end='' if end == '\n' else end) out = f.getvalue() Cluster().publish_log_message(out) else: print(*logs, sep=sep, end=end, file=file) self.empty_logs(logs) if exit: sys.exit()
def handler_exit(self, *args, **kwargs): """ 程序退出 :param args: :param kwargs: :return: """ if Config.is_cluster_enabled(): from py12306.cluster.cluster import Cluster Cluster().left_cluster() sys.exit()
def clusters(): """ 节点统计 节点数量,主节点,子节点列表 :return: """ from py12306.cluster.cluster import Cluster nodes = Cluster().nodes count = len(nodes) node_lists = list(nodes) master = [key for key, val in nodes.items() if int(val) == Cluster.KEY_MASTER] master = master[0] if master else '' return jsonify({ 'master': master, 'count': count, 'node_lists': ', '.join(node_lists) })
def __init__(self, info, query): self.cluster = Cluster() self.query = query self.init_data(info) self.update_interval()
def __init__(self, info): self.cluster = Cluster() self.init_data(info)
def __init__(self): self.cluster = Cluster() create_thread_and_run(self, 'watch_cdn', False)
def is_master(): # 是不是 主 from py12306.cluster.cluster import Cluster return Config().CLUSTER_ENABLED and (Config().NODE_IS_MASTER or Cluster().is_master)
def __init__(self): super().__init__() self.data_path = Config().QUERY_DATA_DIR + 'status.json' self.cluster = Cluster()
def __init__(self): self.session = Request() self.cluster = Cluster() self.update_query_interval() self.update_query_jobs()
def __init__(self): self.cluster = Cluster() self.heartbeat = Config().USER_HEARTBEAT_INTERVAL self.update_interval() self.update_user_accounts()
def get_remote_config(self): if not self.is_cluster_enabled(): return from py12306.cluster.cluster import Cluster return Cluster().session.get_pickle(Cluster().KEY_CONFIGS, {})
def save_to_remote(self): if not self.is_master(): return from py12306.cluster.cluster import Cluster Cluster().session.set_pickle(Cluster().KEY_CONFIGS, self.envs)
def __init__(self): from py12306.cluster.cluster import Cluster self.cluster = Cluster()
def __init__(self): self.cluster = Cluster() self.update_interval() self.update_user_accounts()
def init_class(self): from py12306.cluster.cluster import Cluster if Config.is_cluster_enabled(): Cluster().run()