reload plugins without restarting server
This commit is contained in:
parent
3c1b5616ac
commit
3043c33948
@ -167,7 +167,12 @@ async def plugin_toggle(name: str) -> WerkzeugResponse:
|
||||
|
||||
@app.post("/plugin/<name>/install")
|
||||
async def plugin_install(name: str) -> WerkzeugResponse:
|
||||
tutorclient.CliPool.run_parallel(app, ["plugins", "install", name])
|
||||
async def bg_install_and_reload():
|
||||
tutorclient.CliPool.run_parallel(app, ["plugins", "install", name])
|
||||
while tutorclient.CliPool.THREAD and tutorclient.CliPool.THREAD.is_alive():
|
||||
await asyncio.sleep(0.1)
|
||||
tutorclient.Client.reload_plugins()
|
||||
asyncio.create_task(bg_install_and_reload())
|
||||
return redirect(url_for("plugin", name=name, show_logs=True))
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import asyncio
|
||||
import contextlib
|
||||
import importlib_metadata
|
||||
import logging
|
||||
import os
|
||||
import shlex
|
||||
@ -19,6 +20,7 @@ import tutor.commands.cli
|
||||
import tutor.config
|
||||
import tutor.utils
|
||||
import tutor.plugins.indexes
|
||||
from tutor.plugins.v1 import discover_package
|
||||
|
||||
from . import constants
|
||||
|
||||
@ -292,6 +294,11 @@ class Client:
|
||||
@classmethod
|
||||
def enabled_plugins(cls) -> list[str]:
|
||||
return list(hooks.Filters.PLUGINS_LOADED.iterate())
|
||||
|
||||
@classmethod
|
||||
def reload_plugins(cls) -> None:
|
||||
for entrypoint in importlib_metadata.entry_points(group="tutor.plugin.v1"):
|
||||
discover_package(entrypoint)
|
||||
|
||||
@classmethod
|
||||
def plugin_config_unique(cls, name: str) -> Config:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user