diff --git a/run_service_backend.py b/run_service_backend.py index d6979e6..0cfa80b 100644 --- a/run_service_backend.py +++ b/run_service_backend.py @@ -129,13 +129,22 @@ def skland_sign_in_thread(): finally: ark_back.logger.info('Data Retrieve Stopped') +logger = LoggerClass().get_log(logging.INFO) +ark_back = ArkHelperBackend(logger=logger) +# ark_back.update_gacha_data() +# ark_back.update_payment_data() +threading.Thread(target=skland_sign_in_thread).start() +threading.Thread(target=data_retrieve_thread).start() + if __name__ == '__main__': print('start') - logger = LoggerClass().get_log(logging.INFO) - ark_back = ArkHelperBackend(logger=logger) - ark_back.update_payment_data() - threading.Thread(target=skland_sign_in_thread).start() - threading.Thread(target=data_retrieve_thread).start() + ark_back.skland_sign_new() + # logger = LoggerClass().get_log(logging.INFO) + # ark_back = ArkHelperBackend(logger=logger) + # ark_back.update_gacha_data() + # ark_back.update_payment_data() + # threading.Thread(target=skland_sign_in_thread).start() + # threading.Thread(target=data_retrieve_thread).start() app.run(host="192.168.195.194", port=59001) diff --git a/src/ark_helper_backend/backend.py b/src/ark_helper_backend/backend.py index 139864a..7124846 100644 --- a/src/ark_helper_backend/backend.py +++ b/src/ark_helper_backend/backend.py @@ -197,7 +197,7 @@ class ArkHelperBackend: def data_retrieve(self): self.refresh_user_token() # self.update_payment_data() - self.update_gacha_data() + # self.update_gacha_data() def show_data(self): gacha_data = {user: content['gacha'] for user, content in self.user_data_dict.items()} @@ -206,7 +206,18 @@ class ArkHelperBackend: if __name__ == '__main__': - ak_back = ArkHelperBackend() - ak_back.update_gacha_data() + # ak_back = ArkHelperBackend() + # ak_back.update_gacha_data() # ak_back.update_payment_data() - ak_back.skland_sign_new() + # ak_back.skland_sign_new() + + login_url = 'https://ak.hypergryph.com/user/login' + session = requests.session() + session.get(login_url) + login_data = json.dumps({"phone": '18021026530', "password": 'Mrfz1790990971'}) + response = session.post('https://as.hypergryph.com/user/auth/v1/token_by_phone_password', data=login_data, + headers={"Content-Type": "application/json"}) + token_data = json.loads(response.text)['data']['token'] + save_cookie = response.cookies + + print('done') diff --git a/start_server.py b/start_server.py new file mode 100644 index 0000000..96934e9 --- /dev/null +++ b/start_server.py @@ -0,0 +1,66 @@ +import subprocess +import time +import socket +import os +import logging + +from datetime import datetime +from pathlib import Path + +from src.My_Logger.project_logger import LoggerClass + +LOG_PATH = Path(__file__).parent / 'logs' + + +def is_port_in_use(port: int) -> bool: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + return s.connect_ex(('192.168.195.194', port)) == 0 + + +def start_server(): + """ + launch a micro service using gunicorn + :return: + """ + launch_file_name = 'run_service_backend' # file name of the entrance point + pid_path = LOG_PATH / 'pid.txt' + + IP = '192.168.195.194' + PORT = 59001 + WORKER = 1 + TIME_OUT = 60 + THREADS = 5 + logger = LoggerClass().get_log(logging.INFO) + + if is_port_in_use(PORT): + logger.error(f'Port {PORT} already in use') + return + + now = datetime.now() + + cmd = [ + "nohup", + "/home/armor/anaconda3/envs/py311/bin/gunicorn", + "--threads", str(THREADS), + "--workers", str(WORKER), + "--bind", f"{IP}:{PORT}", f"{launch_file_name}:app", + "--timeout", str(TIME_OUT), + "--pid", pid_path + ] + stdout_file = LOG_PATH / f"console_{now.year}-{now.month}-{now.day}.log" + pid = subprocess.Popen(cmd, stdout=stdout_file.open('a'), stderr=subprocess.STDOUT, close_fds=True, start_new_session=True).pid + time.sleep(5) + + if not is_port_in_use(PORT) or not os.path.exists(pid_path) or str(pid) != pid_path.read_text().strip(): + logger.error(f'Failed to start server, check {stdout_file} and {pid_path}') + print(f">> tail {stdout_file}") + subprocess.run(["tail", str(stdout_file)]) + return + + info_str = f"Server started" + logger.info(info_str) + logger.info(f"server running at {IP}:{PORT} with pid {pid}") + + +if __name__ == "__main__": + start_server() \ No newline at end of file diff --git a/stop_server.py b/stop_server.py new file mode 100644 index 0000000..b6b3313 --- /dev/null +++ b/stop_server.py @@ -0,0 +1,27 @@ +import os +import psutil +import signal + + +def stop_server(port): + # 遍历当前所有运行的进程 + for proc in psutil.process_iter(attrs=['pid', 'name']): + try: + # 查找进程监听的所有连接 + for conn in proc.connections(kind='inet'): + if conn.laddr.port == port: + print(f"Killing process {proc.info['name']} (PID: {proc.info['pid']}) on port {port}") + os.kill(proc.info['pid'], signal.SIGTERM) + return True + except (psutil.NoSuchProcess, psutil.AccessDenied): + continue + return False + + + +if __name__ == '__main__': + PORT = 59001 + if stop_server(PORT): + print(f"Process on port {PORT} has been terminated.") + else: + print(f"No process found on port {PORT}.") \ No newline at end of file