mirror of
https://github.com/zhayujie/bot-on-anything.git
synced 2026-02-10 00:07:23 +08:00
59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
# encoding:utf-8
|
|
|
|
import config
|
|
from channel import channel_factory
|
|
from common import log
|
|
import os
|
|
from multiprocessing import Pool
|
|
|
|
|
|
def startProcess(channel_type):
|
|
# load config
|
|
config.load_config()
|
|
# create channel
|
|
channel = channel_factory.create_channel(channel_type)
|
|
# startup channel
|
|
channel.startup()
|
|
|
|
|
|
def wrapper(channel_type):
|
|
startProcess(channel_type)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
# load config
|
|
config.load_config()
|
|
|
|
proxy = config.conf().get("model").get("openai").get("proxy")
|
|
if proxy:
|
|
os.environ['http_proxy'] = proxy
|
|
os.environ['https_proxy'] = proxy
|
|
|
|
model_type = config.conf().get("model").get("type")
|
|
channel_type = config.conf().get("channel").get("type")
|
|
if isinstance(channel_type, list) == False: # 兼容字符串格式的type
|
|
channel_type = [channel_type]
|
|
|
|
# 使用主进程启动终端通道
|
|
if "terminal" in channel_type:
|
|
index = channel_type.index("terminal")
|
|
terminal = channel_type.pop(index)
|
|
else:
|
|
terminal = None
|
|
# 使用进程池启动其他通道子进程
|
|
pool = Pool(len(channel_type))
|
|
for type in channel_type:
|
|
log.info("[INIT] Start up: {} on {}", model_type, type)
|
|
pool.apply_async(wrapper, args=[type])
|
|
|
|
if terminal:
|
|
channel = channel_factory.create_channel(terminal)
|
|
channel.startup()
|
|
# 等待池中所有进程执行完毕
|
|
pool.close()
|
|
pool.join()
|
|
except Exception as e:
|
|
log.error("App startup failed!")
|
|
log.exception(e)
|