2016-12-10 3 views
0

web.py를 사용하여 두 개의 서버를 실행하고 하나에서 다른 서버로 호출을 시작하려고합니다. 두 서버는 정상적으로 시작하지만 URL을 호출하려고하면 아래의 스택 추적이 발생합니다.web.py에서 get 요청을 시작할 수 없습니다.

import web 

urls = (
    '/ping', 'Ping', 
    '/acqlock/+(.*)', 'Acquire', 
) 

class MSA(web.application): 
    def run(self, port=8081, *middleware): 
     func = self.wsgifunc(*middleware) 
     return web.httpserver.runsimple(func, ('127.0.0.1', port)) 

app = MSA(urls, globals()) 
if __name__ == "__main__": 
    app.run(port=8081) 

class Acquire: 
    def GET(self, resource_name): 
     print resource_name 
     response = app.request('http://127.0.0.1:8080/acqlock/' + resource_name, method='GET') 
     return response 

하지만이 오류는/acqlock을 호출 한 후에도 계속 나타납니다.

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\web\wsgiserver\__init__.py", line 1245, in communicate 
    req.respond() 
    File "C:\Python27\lib\site-packages\web\wsgiserver\__init__.py", line 775, in respond 
    self.server.gateway(self).respond() 
    File "C:\Python27\lib\site-packages\web\wsgiserver\__init__.py", line 2018, in respond 
    response = self.req.server.wsgi_app(self.env, self.start_response) 
    File "C:\Python27\lib\site-packages\web\httpserver.py", line 306, in __call__ 
    return self.app(environ, xstart_response) 
    File "C:\Python27\lib\site-packages\web\httpserver.py", line 274, in __call__ 
    return self.app(environ, start_response) 
    File "C:\Python27\lib\site-packages\web\application.py", line 279, in wsgi 
    result = self.handle_with_processors() 
    File "C:\Python27\lib\site-packages\web\application.py", line 249, in handle_with_processors 
    return process(self.processors) 
    File "C:\Python27\lib\site-packages\web\application.py", line 246, in process 
    raise self.internalerror() 
    File "C:\Python27\lib\site-packages\web\application.py", line 515, in internalerror 
    parent = self.get_parent_app() 
    File "C:\Python27\lib\site-packages\web\application.py", line 500, in get_parent_app 
    if self in web.ctx.app_stack: 
AttributeError: 'ThreadedDict' object has no attribute 'app_stack' 

답변

0

요청 라이브러리를 사용하십시오.

import requests 
    response = requests.request(method='GET', url ='http://127.0.0.1:8080/acqlock/' + resource_name) 

참고 : 당신은 당신이 8081

에 web.py를 개최에도 불구하고 URL에 포트 8080을 사용하고 있습니다