From d6559d0e6812399cca6e9d70aa4d2b1d909d3270 Mon Sep 17 00:00:00 2001 From: justuser Date: Mon, 17 Jun 2024 20:25:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BD=D0=BE=D0=B2=D0=B0=20multiprocessin?= =?UTF-8?q?g,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BC=D0=BD=D0=B3=D0=BD=D0=BE=D0=B2=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B1=D0=B5=D0=B7=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 125 ++++++++++++++++++++++++++++-------------------------- status.py | 26 ++++++++++++ 2 files changed, 91 insertions(+), 60 deletions(-) create mode 100644 status.py diff --git a/main.py b/main.py index 91a1b78..062d28c 100644 --- a/main.py +++ b/main.py @@ -1,71 +1,76 @@ from os import system, name -from threading import Thread from time import sleep +from threading import Thread +from multiprocessing import Process + from network import * from updater import * - -# Здесь общий запуск всех файлов и команд - - -# Проверка обновлений -from sys import argv -if len(argv) == 1: - print("Проверка обновлений...") - system("git pull") - print("Перезагрузка скрипта...") - system("python main.py updated") - exit() -print("\nУспешно перезагружено!") - - from proxy import * +from status import * -http_port = port_gen() -print(f"HTTP: {http_port}") -rp_http = Thread(target = watch_http, args=(http_port,)) -rp_http.daemon = True -rp_http.start() - -serv_port = port_gen() -print(f"SERV: {serv_port}") -rp_serv = Thread(target = watch_serv, args=(serv_port,)) -rp_serv.daemon = True -rp_serv.start() - - - -# Стартуем сервисы -#http сервер -http = Thread(target = server_http) -http.daemon = True -http.start() -# сервер для пинга -server = Thread(target = server, args=(http_port,)) -server.daemon = True -server.start() - - -# Стартуем авто-поиск портов и авто-обновление сайтов -updater = Thread(target = update_demon, args=(serv_port,)) -updater.daemon = True -updater.start() +# Здесь общий запуск всех файлов и команд -# Стартуем интерфейс -system(f"python -m streamlit run --server.address=127.0.0.1 interface.py {serv_port}") -while True: - try: - pass - except: +def main(): + # Проверка обновлений + from sys import argv + if len(argv) == 1: + print("Проверка обновлений...") + system("git pull") + print("Перезагрузка скрипта...") + system("python main.py updated") exit() - -#print(client(8000, "ping")) -#ports = port_check(serv_port) -#print(ports) - -#print(client(4015, "ping")) -#print(client(4137, "is_just.jet")) - -#client(4092, "publish_just.jet<>4066") + print("\nУспешно перезагружено!") + + # Запуск прокси для сервисов + # проксируем http сервер + http_port = port_gen() + print(f"HTTP: {http_port}") + rp_http = Thread(target = watch_http, args=(http_port,)) + rp_http.start() + + # проксируем сервер обработки запросов + serv_port = port_gen() + print(f"SERV: {serv_port}") + rp_serv = Thread(target = watch_serv, args=(serv_port,)) + rp_serv.start() + + # Стартуем сервисы + # http сервер + http = Thread(target = server_http) + http.start() + # сервер обработки запросов + srv = Thread(target = server, args=(http_port,)) + srv.start() + + # Стартуем авто-поиск портов и авто-обновление сайтов + updater = Thread(target = update_demon, args=(serv_port,)) + updater.start() + + # !!! ИДЁТ ПЕРЕРАБОТКА !!! + # Стартуем интерфейс + #system(f"python -m streamlit run --server.address=127.0.0.1 interface.py {serv_port}") + +if __name__ == "__main__": + # Запускаем главный процесс, чтобы потом легко убить его + p = Process(target=main) + p.start() + + status_set(True) # Устанавливаем статус, что программа работает + + st = status_check() + while st: + try: + st = status_check() + sleep(0.01) + except KeyboardInterrupt: + p.terminate() + exit() + except: + pass + + # Когда послан код завершения + p.terminate() + exit() diff --git a/status.py b/status.py new file mode 100644 index 0000000..60705b2 --- /dev/null +++ b/status.py @@ -0,0 +1,26 @@ +# +# Установка/проверка статуса завершения +# + +import os + +if not os.path.exists('status'): + f = open('status', 'w') + f.write('work') + f.close() + +def status_check(): + f = open('status', 'r') + st = f.read() + if st == 'work': + return True + else: + return False + +def status_set(st): + f = open('status', 'w') + if st == True: + f.write('work') + else: + f.write('stop') + f.close()