fix: Fixed couldn't exit correctly when an exception occurred or when Ctrl+C was pressed

This commit is contained in:
LWR
2023-05-08 20:32:51 +08:00
parent 8272c0baf1
commit a80fa3c089
+9 -5
View File
@@ -1,5 +1,6 @@
import asyncio import asyncio
import json import json
import signal
import sys import sys
from creart import create from creart import create
@@ -70,18 +71,18 @@ class StarBot:
await self.__datasource.load() await self.__datasource.load()
except DataSourceException as ex: except DataSourceException as ex:
logger.error(ex.msg) logger.error(ex.msg)
return return 1
if not self.__datasource.bots: if not self.__datasource.bots:
logger.error("数据源配置为空, 请先在数据源中配置完毕后再重新运行") logger.error("数据源配置为空, 请先在数据源中配置完毕后再重新运行")
return return 2
# 连接 Redis # 连接 Redis
try: try:
await redis.init() await redis.init()
except RedisException as ex: except RedisException as ex:
logger.error(ex.msg) logger.error(ex.msg)
return return 3
# 通过 UID 列表批量获取信息 # 通过 UID 列表批量获取信息
info = {} info = {}
@@ -190,7 +191,7 @@ class StarBot:
pass pass
else: else:
logger.error(ex) logger.error(ex)
return return 4
def run(self): def run(self):
""" """
@@ -215,5 +216,8 @@ class StarBot:
bcc = create(Broadcast) bcc = create(Broadcast)
loop = bcc.loop loop = bcc.loop
loop.create_task(self.__main()) if loop.run_until_complete(self.__main()):
return
loop.add_signal_handler(signal.SIGINT, lambda: loop.stop())
loop.run_forever() loop.run_forever()
loop.close()