2016-04-17 3 views
1

Я пытаюсь понять, как сделать это example принять aiohttp.web.Application экземпляр, так что он может использовать этот шаблон:использования web.Application с многопроцессорной

def handler1(request): 
    ... 

def handler2(request): 
    ... 

app = web.Application() 
app.router.add_route('GET', '/one', handler1) 
app.router.add_route('GET', '/two', handler2) 

Что делает мою жизнь трудной, что я был в состоянии довести мой экземпляр приложения до ChildProcess. INIT но не могу понять, как изменить метод запуска (я только сохранил часть мне нужна помощь, чтобы изменить):

class ChildProcess: 

    def __init__(self, up_read, down_write, app, args, sock): 
     ... 
     self.app = app 
     ... 

    def start(self): 
     ... 

     # how to leverage the app.router here???? 
     # these few lines like aiohttp.web.run_app(app) code 
     # there must be a way to make this work together 
     f = loop.create_server(
      lambda: HttpRequestHandler(debug=True, keep_alive=75), 
      sock=self.sock) 

     srv = loop.run_until_complete(f) 

ответ

1

Я нашел, и я думаю, что вы могли бы быть заинтересованы:

class ChildProcess: 

    def start(self): 
     ... 
     # lines 123, 124, and 125 become: 
     handler = web.RequestHandlerFactory(self.app, self.app.router, loop=loop, 
              debug=True, keep_alive=75) 

     f = loop.create_server(lambda: handler(), sock=self.sock) 
     ... 

Остальное остается без изменений.