Снова 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

119
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
if len(argv) == 1:
print("Проверка обновлений...")
system("git pull")
print("Перезагрузка скрипта...")
system("python main.py updated")
exit()
print("\nУспешно перезагружено!")
def main():
from proxy import * # Проверка обновлений
from sys import argv
http_port = port_gen() if len(argv) == 1:
print(f"HTTP: {http_port}") print("Проверка обновлений...")
rp_http = Thread(target = watch_http, args=(http_port,)) system("git pull")
rp_http.daemon = True print("Перезагрузка скрипта...")
rp_http.start() system("python main.py updated")
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:
exit() exit()
print("\nУспешно перезагружено!")
#print(client(8000, "ping")) # Запуск прокси для сервисов
#ports = port_check(serv_port) # проксируем http сервер
#print(ports) http_port = port_gen()
print(f"HTTP: {http_port}")
rp_http = Thread(target = watch_http, args=(http_port,))
rp_http.start()
#print(client(4015, "ping")) # проксируем сервер обработки запросов
#print(client(4137, "is_just.jet")) serv_port = port_gen()
print(f"SERV: {serv_port}")
rp_serv = Thread(target = watch_serv, args=(serv_port,))
rp_serv.start()
#client(4092, "publish_just.jet<>4066") # Стартуем сервисы
# 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()

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