rename old
This commit is contained in:
93
old_py12306/user/user.py
Normal file
93
old_py12306/user/user.py
Normal file
@@ -0,0 +1,93 @@
|
||||
from py12306.app import *
|
||||
from py12306.cluster.cluster import Cluster
|
||||
from py12306.helpers.event import Event
|
||||
from py12306.helpers.func import *
|
||||
from py12306.log.user_log import UserLog
|
||||
from py12306.user.job import UserJob
|
||||
|
||||
|
||||
@singleton
|
||||
class User:
|
||||
users = []
|
||||
user_accounts = []
|
||||
|
||||
retry_time = 3
|
||||
cluster = None
|
||||
|
||||
def __init__(self):
|
||||
self.cluster = Cluster()
|
||||
self.update_interval()
|
||||
self.update_user_accounts()
|
||||
|
||||
def update_user_accounts(self, auto=False, old=None):
|
||||
self.user_accounts = Config().USER_ACCOUNTS
|
||||
if auto:
|
||||
UserLog.add_quick_log(UserLog.MESSAGE_USERS_DID_CHANGED).flush()
|
||||
self.refresh_users(old)
|
||||
|
||||
def update_interval(self, auto=False):
|
||||
self.interval = Config().USER_HEARTBEAT_INTERVAL
|
||||
if auto: jobs_do(self.users, 'update_user')
|
||||
|
||||
@classmethod
|
||||
def run(cls):
|
||||
self = cls()
|
||||
app_available_check()
|
||||
self.start()
|
||||
pass
|
||||
|
||||
def start(self):
|
||||
self.init_users()
|
||||
UserLog.print_init_users(users=self.users)
|
||||
# 多线程维护用户
|
||||
create_thread_and_run(jobs=self.users, callback_name='run', wait=Const.IS_TEST)
|
||||
|
||||
def init_users(self):
|
||||
for account in self.user_accounts:
|
||||
self.init_user(account)
|
||||
|
||||
def init_user(self, info):
|
||||
user = UserJob(info=info)
|
||||
self.users.append(user)
|
||||
return user
|
||||
|
||||
def refresh_users(self, old):
|
||||
for account in self.user_accounts:
|
||||
key = account.get('key')
|
||||
old_account = array_dict_find_by_key_value(old, 'key', key)
|
||||
if old_account and account != old_account:
|
||||
user = self.get_user(key)
|
||||
user.init_data(account)
|
||||
elif not old_account: # 新用户 添加到 多线程
|
||||
new_user = self.init_user(account)
|
||||
create_thread_and_run(jobs=new_user, callback_name='run', wait=Const.IS_TEST)
|
||||
|
||||
for account in old: # 退出已删除的用户
|
||||
if not array_dict_find_by_key_value(self.user_accounts, 'key', account.get('key')):
|
||||
Event().user_job_destroy({'key': account.get('key')})
|
||||
|
||||
@classmethod
|
||||
def is_empty(cls):
|
||||
self = cls()
|
||||
return not bool(self.users)
|
||||
|
||||
@classmethod
|
||||
def get_user(cls, key) -> UserJob:
|
||||
self = cls()
|
||||
for user in self.users:
|
||||
if user.key == key: return user
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def get_passenger_for_members(cls, members, key):
|
||||
"""
|
||||
检测乘客信息
|
||||
:param passengers
|
||||
:return:
|
||||
"""
|
||||
self = cls()
|
||||
|
||||
for user in self.users:
|
||||
assert isinstance(user, UserJob)
|
||||
if user.key == key and user.wait_for_ready():
|
||||
return user.get_passengers_by_members(members)
|
||||
Reference in New Issue
Block a user