nonebot / nb-cli

NoneBot2 脚手架 / CLI for NoneBot2
https://cli.nonebot.dev
MIT License
156 stars 17 forks source link

Feature: 冷重载延时 #96

Closed fu050409 closed 1 year ago

fu050409 commented 1 year ago

唔,我又来发issue了

关于nb-cli中,nb run --reload的功能,建议提供重载延时功能。 譬如我的插件中存在自我更新的功能,更新之后nb-cli会自动重载整个Nonebot2,如果nb-cli反应太迅捷的话,部分操作可能尚未完成,能否提供类似nb run --reload 2延时两秒重载的功能?

以及,Nonebot2那边可否提供重新导入某个插件的方法?这样便于Nonebot2在运行的时候在用户层级操作插件。

yanyongyu commented 1 year ago

python无法无副作用的重新导入模块

fu050409 commented 1 year ago

python无法无副作用的重新导入模块

但是Nonebot2是可以实现的,可以把每个插件注册的内容(譬如命令)标记,reload的时候回滚操作然后重导入……呃,好吧确实是够麻烦的

fu050409 commented 1 year ago

但是我说的这个延时重载的功能应该还是挺实用的,看看有没有必要加上

yanyongyu commented 1 year ago

热重载延时是可以实现的

fu050409 commented 1 year ago

热重载延时是可以实现的

新版我这边测试无效,它没有进行热重载。不清楚是我这里的问题还是你那边的问题。

指令:

nb run --reload-delay 2

从理论上讲这个应该是延迟两秒,但是它没有应答文件(插件内容)修改而重载。

备注:nb run --reload运行正常。

yanyongyu commented 1 year ago

reload参数不能省略