This commit is contained in:
2026-05-08 16:28:20 +08:00
parent 6bbe694cde
commit 3bd95a4fb6
4 changed files with 122 additions and 9 deletions
+14 -5
View File
@@ -129,13 +129,22 @@ def skland_sign_in_thread():
finally: finally:
ark_back.logger.info('Data Retrieve Stopped') 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__': if __name__ == '__main__':
print('start') print('start')
logger = LoggerClass().get_log(logging.INFO) ark_back.skland_sign_new()
ark_back = ArkHelperBackend(logger=logger) # logger = LoggerClass().get_log(logging.INFO)
ark_back.update_payment_data() # ark_back = ArkHelperBackend(logger=logger)
threading.Thread(target=skland_sign_in_thread).start() # ark_back.update_gacha_data()
threading.Thread(target=data_retrieve_thread).start() # 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) app.run(host="192.168.195.194", port=59001)
+15 -4
View File
@@ -197,7 +197,7 @@ class ArkHelperBackend:
def data_retrieve(self): def data_retrieve(self):
self.refresh_user_token() self.refresh_user_token()
# self.update_payment_data() # self.update_payment_data()
self.update_gacha_data() # self.update_gacha_data()
def show_data(self): def show_data(self):
gacha_data = {user: content['gacha'] for user, content in self.user_data_dict.items()} gacha_data = {user: content['gacha'] for user, content in self.user_data_dict.items()}
@@ -206,7 +206,18 @@ class ArkHelperBackend:
if __name__ == '__main__': if __name__ == '__main__':
ak_back = ArkHelperBackend() # ak_back = ArkHelperBackend()
ak_back.update_gacha_data() # ak_back.update_gacha_data()
# ak_back.update_payment_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')
+66
View File
@@ -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()
+27
View File
@@ -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}.")