Skip to content

Instantly share code, notes, and snippets.

@paopjian
Created May 17, 2024 07:09
Show Gist options
  • Save paopjian/bb836fad7806857cbc7b71e7d8e14a35 to your computer and use it in GitHub Desktop.
Save paopjian/bb836fad7806857cbc7b71e7d8e14a35 to your computer and use it in GitHub Desktop.
创建双线程服务,互相不卡住,5s后检测是否启动成功,60s内重启多次
import functools
import http.server
import socketserver
import time
from threading import Thread
import uvicorn
def create_http_server():
port = 8000
handler = functools.partial(http.server.SimpleHTTPRequestHandler, directory='./data')
httpd = socketserver.TCPServer(("127.0.0.1", port), handler)
httpd.serve_forever()
def create_uvicorn_server():
uvicorn.run(app='ocr_server.main:app', host='0.0.0.0', port=8002)
def start_thread():
th1 = Thread(target=create_http_server, daemon=True)
th2 = Thread(target=create_uvicorn_server, daemon=True)
th1.start()
th2.start()
time.sleep(5)
import socket
print("启动ftp服务器中")
count_time = 60
while count_time > 0:
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(1)
try:
sk.connect(('127.0.0.1', 8000))
count_time = -1
print("启动ftp服务器成功")
break
except Exception:
print("启动ftp服务器失败,5s后重试")
finally:
sk.close()
time.sleep(5)
count_time -= 5
else:
print("启动ftp服务器失败")
exit()
print("启动uvicorn服务器中")
count_time = 60
while count_time > 0:
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(1)
try:
sk.connect(('127.0.0.1', 8002))
count_time = -1
print("启动uvicorn服务器成功")
break
except Exception as e:
print("启动uvicorn服务器失败,5s后重试")
pass
finally:
sk.close()
time.sleep(5)
count_time -= 5
else:
print("启动uvicorn服务器失败")
exit()
return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment