-
-
Notifications
You must be signed in to change notification settings - Fork 576
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: 支持Graceful Shutdown(等待正在执行的matcher执行完毕后再退出) #2479
Comments
这个问题其实在之前改到结构化并发的时候就实现了,但是由于anyio的问题,这个分支最后被废弃了 |
我的插件目前通过 用法: require('nonebot_plugin_wait_a_minute')
from nonebot_plugin_wait_a_minute import graceful
@foo.handle()
@graceful() # ← Add the decorator below the handle decorator
async def _():
await foo.send('foo') |
我现在是注册了个on_shutdown的回调在里面await没执行完成的任务实现的,看起来思路都差不多( 原来我去年说过,那没事了 |
在 #3053 中,迁移 nb 至结构化并发框架,经过对比各类驱动器实现(如 uvicorn),在 graceful shutdown 时均采用直接断开连接的方式。因此,此时再等待 matcher 执行完毕已经没有意义。同时,cancel 正在执行中的 task 并等待结束也是符合逻辑的 graceful shutdown。暂时不考虑支持在不断开连接的情况下等待 matcher 执行完毕。 |
所以可以来用我的插件,阻止驱动器进行shutdown,达成等待matcher运行完成后再shutdown( |
希望能解决的问题
我有一个提供naga牌谱解析服务的插件 nonebot-plugin-nagabus 。解析需要消耗点数,换句话说就是要给naga送钱。所以希望退出时等待用户请求处理完毕再退出,否则用户消耗了点数又没拿到结果。
描述所需要的功能
当用户退出时,不希望打断当前正在执行的matcher,希望能够等待执行完毕后再退出
目前是通过hook丑陋地实现的( https://github.com/bot-ssttkkl/ssttkkl-nonebot-utils/blob/master/ssttkkl_nonebot_utils/interceptor/with_graceful_shutdown.py ),希望nb官方能够提供支持
The text was updated successfully, but these errors were encountered: