Снова multiprocessing, добавление мнгновенной остановки без багов

This commit is contained in:
justuser 2024-06-17 20:25:08 +03:00
parent 9b64354728
commit d6559d0e68
2 changed files with 88 additions and 57 deletions

97
main.py
View File

@ -1,71 +1,76 @@
from os import system, name from os import system, name
from threading import Thread
from time import sleep from time import sleep
from threading import Thread
from multiprocessing import Process
from network import * from network import *
from updater import * from updater import *
from proxy import *
from status import *
# Здесь общий запуск всех файлов и команд # Здесь общий запуск всех файлов и команд
# Проверка обновлений
from sys import argv def main():
if len(argv) == 1: # Проверка обновлений
from sys import argv
if len(argv) == 1:
print("Проверка обновлений...") print("Проверка обновлений...")
system("git pull") system("git pull")
print("Перезагрузка скрипта...") print("Перезагрузка скрипта...")
system("python main.py updated") system("python main.py updated")
exit() exit()
print("\nУспешно перезагружено!") print("\nУспешно перезагружено!")
# Запуск прокси для сервисов
# проксируем http сервер
http_port = port_gen()
print(f"HTTP: {http_port}")
rp_http = Thread(target = watch_http, args=(http_port,))
rp_http.start()
from proxy import * # проксируем сервер обработки запросов
serv_port = port_gen()
print(f"SERV: {serv_port}")
rp_serv = Thread(target = watch_serv, args=(serv_port,))
rp_serv.start()
http_port = port_gen() # Стартуем сервисы
print(f"HTTP: {http_port}") # http сервер
rp_http = Thread(target = watch_http, args=(http_port,)) http = Thread(target = server_http)
rp_http.daemon = True http.start()
rp_http.start() # сервер обработки запросов
srv = Thread(target = server, args=(http_port,))
srv.start()
serv_port = port_gen() # Стартуем авто-поиск портов и авто-обновление сайтов
print(f"SERV: {serv_port}") updater = Thread(target = update_demon, args=(serv_port,))
rp_serv = Thread(target = watch_serv, args=(serv_port,)) updater.start()
rp_serv.daemon = True
rp_serv.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) # Устанавливаем статус, что программа работает
#http сервер
http = Thread(target = server_http)
http.daemon = True
http.start()
# сервер для пинга
server = Thread(target = server, args=(http_port,))
server.daemon = True
server.start()
st = status_check()
# Стартуем авто-поиск портов и авто-обновление сайтов while st:
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: try:
pass st = status_check()
except: sleep(0.01)
except KeyboardInterrupt:
p.terminate()
exit() exit()
except:
pass
#print(client(8000, "ping")) # Когда послан код завершения
#ports = port_check(serv_port) p.terminate()
#print(ports) exit()
#print(client(4015, "ping"))
#print(client(4137, "is_just.jet"))
#client(4092, "publish_just.jet<>4066")

26
status.py Normal file
View File

@ -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()