2016-07-13 70 views
5

Dosya değişikliklerini izlemek için bu değiştirilmiş dosyanın modülünü aşırı yüklemeyi denemek için pyinotify kullanıyorum. Fakat maalesef, modül muhtemelen aşırı yüklenmemiş, görmediğim değişiklikler. modül aa.aaPython-asyncio kullanırken modüller nasıl yüklenir?

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") 

den

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 

Ve kod dosyası Belki başka bir yolu yoktur, elle yeniden yoktu kodunu değiştirmek gerekir.

cevap