Files
bot-on-anything/app.py
2023-03-22 00:17:50 +08:00

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)