5
pyinotify
을 사용하여 파일 변경 사항을 추적하고이 수정 된 파일의 모듈에 과부하를 시도합니다. 하지만 안타깝게도 모듈에 과부하가 걸리지 않았으므로 변경 사항은 표시되지 않습니다. 모듈 aa.aa
python-asyncio를 사용할 때 모듈을 오버로드하는 방법은 무엇입니까?
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")
에서
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
그리고 코드 파일이 어쩌면 다른 방법이, 내가 수동으로 다시로드하지 않은 코드를 변경해야합니다.