Files
bot-on-anything/app.py
2023-03-19 00:45:46 +08:00

47 lines
1.3 KiB
Python

# encoding:utf-8
import config
from channel import channel_factory
from common import log
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()
model_type = config.conf().get("model").get("type")
channel_type = config.conf().get("channel").get("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)