注册器未启动时,整个启动链因为异常被终止

使用await asyncio.sleep(3)可以让后续代码等待一段时间,但不是最优解
This commit is contained in:
glide-the 2023-09-02 19:20:41 +08:00
parent 3391155077
commit d7c884e34a
1 changed files with 25 additions and 19 deletions

View File

@ -1,6 +1,7 @@
from multiprocessing import Process, Queue from multiprocessing import Process, Queue
import multiprocessing as mp import multiprocessing as mp
import subprocess import subprocess
import asyncio
import sys import sys
import os import os
from pprint import pprint from pprint import pprint
@ -8,6 +9,7 @@ from pprint import pprint
# 设置numexpr最大线程数默认为CPU核心数 # 设置numexpr最大线程数默认为CPU核心数
try: try:
import numexpr import numexpr
n_cores = numexpr.utils.detect_number_of_cores() n_cores = numexpr.utils.detect_number_of_cores()
os.environ["NUMEXPR_MAX_THREADS"] = str(n_cores) os.environ["NUMEXPR_MAX_THREADS"] = str(n_cores)
except: except:
@ -497,15 +499,15 @@ def dump_server_info(after_start=False, args=None):
print("\n") print("\n")
if __name__ == "__main__": async def start_main_server():
import time import time
mp.set_start_method("spawn") mp.set_start_method("spawn")
# TODO 链式启动的队列,确实可以用于控制启动顺序, # TODO 链式启动的队列,确实可以用于控制启动顺序,
# 但目前引入proxy_worker后启动的独立于框架的work processes无法确认当前的位置 # 但目前引入proxy_worker后启动的独立于框架的work processes无法确认当前的位置
# 导致注册器未启动时,无法注册。整个启动链因为异常被终止 # 导致注册器未启动时,无法注册。整个启动链因为异常被终止
# 需要将 `run_seq`设置为MAX_int,才能保证在最后启动。 # 使用await asyncio.sleep(3)可以让后续代码等待一段时间,但不是最优解
# 是否需要引入depends_on的机制
queue = Queue() queue = Queue()
args, parser = parse_args() args, parser = parse_args()
@ -554,6 +556,7 @@ if __name__ == "__main__":
daemon=True, daemon=True,
) )
process.start() process.start()
await asyncio.sleep(3)
processes["controller"] = process processes["controller"] = process
process = Process( process = Process(
@ -638,6 +641,9 @@ if __name__ == "__main__":
process.terminate() process.terminate()
if __name__ == "__main__":
# 同步调用协程代码
asyncio.get_event_loop().run_until_complete(start_main_server())
# 服务启动后接口调用示例: # 服务启动后接口调用示例:
# import openai # import openai
# openai.api_key = "EMPTY" # Not support yet # openai.api_key = "EMPTY" # Not support yet