feat: reload when SIGUSR1 is received
This commit is contained in:
parent
94bdb91eb0
commit
1a8f84b333
27
core.py
27
core.py
@ -3,6 +3,7 @@ import contextlib
|
|||||||
import importlib
|
import importlib
|
||||||
import inspect
|
import inspect
|
||||||
import io
|
import io
|
||||||
|
import signal
|
||||||
import textwrap
|
import textwrap
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
@ -59,17 +60,8 @@ async def on_message(message, edited=False):
|
|||||||
|
|
||||||
match matched:
|
match matched:
|
||||||
case C.RELOAD if message.author.id in OWNERS:
|
case C.RELOAD if message.author.id in OWNERS:
|
||||||
reloaded_modules = set()
|
|
||||||
start = time.time()
|
start = time.time()
|
||||||
|
reloaded_modules = reload()
|
||||||
rreload(reloaded_modules, __import__("core"))
|
|
||||||
rreload(reloaded_modules, __import__("extra"))
|
|
||||||
for module in filter(
|
|
||||||
lambda v: inspect.ismodule(v) and v.__name__ in RELOADABLE_MODULES,
|
|
||||||
globals().values(),
|
|
||||||
):
|
|
||||||
rreload(reloaded_modules, module)
|
|
||||||
|
|
||||||
end = time.time()
|
end = time.time()
|
||||||
debug(
|
debug(
|
||||||
f"reloaded {len(reloaded_modules)} modules in {round(end - start, 2)}s",
|
f"reloaded {len(reloaded_modules)} modules in {round(end - start, 2)}s",
|
||||||
@ -186,3 +178,18 @@ def rreload(reloaded_modules, module):
|
|||||||
|
|
||||||
if "__reload_module__" in dir(module):
|
if "__reload_module__" in dir(module):
|
||||||
module.__reload_module__()
|
module.__reload_module__()
|
||||||
|
|
||||||
|
|
||||||
|
def reload(*_):
|
||||||
|
reloaded_modules = set()
|
||||||
|
rreload(reloaded_modules, __import__("core"))
|
||||||
|
rreload(reloaded_modules, __import__("extra"))
|
||||||
|
for module in filter(
|
||||||
|
lambda v: inspect.ismodule(v) and v.__name__ in RELOADABLE_MODULES,
|
||||||
|
globals().values(),
|
||||||
|
):
|
||||||
|
rreload(reloaded_modules, module)
|
||||||
|
return reloaded_modules
|
||||||
|
|
||||||
|
|
||||||
|
signal.signal(signal.SIGUSR1, reload)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user