Ich verwende , um Dateiänderungen zu verfolgen und zu versuchen, das Modul zu überlasten, in dem sich diese geänderte Datei befindet. Aber leider ist das Modul wahrscheinlich nicht überlastet, die Änderungen sind nicht sichtbar.Wie überlasten Module bei Verwendung von Python-Ascio?
import sys
import asyncio
import pyinotify
import importlib
from aiohttp import web
from aa.aa import m_aa
class EventHandler(pyinotify.ProcessEvent):
def my_init(self, loop=None):
self.loop = loop if loop else asyncio.get_event_loop()
def process_IN_MODIFY(self, event):
pathname = event.pathname
name = event.name
if name.endswith('.py'):
for module in sys.modules.values():
if hasattr(module, '__file__'):
if module.__file__ == pathname:
importlib.reload(module)
def inotify_start(loop):
wm = pyinotify.WatchManager()
wm.add_watch('/home/test', pyinotify.ALL_EVENTS, rec=True)
handler = EventHandler(loop=loop)
pyinotify.AsyncioNotifier(wm, loop, default_proc_fun=handler)
async def init(loop):
app = web.Application()
app.router.add_route('GET', '/', m_aa)
handler = app.make_handler()
inotify_start(loop)
srv = await loop.create_server(handler, '0.0.0.0', 8080)
return srv
loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
try:
loop.run_forever()
except KeyboardInterrupt:
pass
Und Code-Datei aus dem Modul aa.aa
from aiohttp import web
async def m_aa(request):
text = b"""
<!DOCTYPE html><meta charset="utf-8" /><html>
<head></head>
<body> <h3>Reload</h3> </body>
</html>
"""
return web.Response(body=text, content_type="text/html")
Vielleicht eine andere Möglichkeit gibt es, ich brauche den Code ändern musste nicht manuell neu zu laden.