无法在web.py中启动get请求

时间:2016-12-10 15:39:11

标签: python web.py

我正在尝试使用web.py运行两台服务器并启动从一台到另一台的呼叫。两个服务器都正常启动,但是当我尝试调用url时,会抛出下面的堆栈跟踪。

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'

1 个答案:

答案 0 :(得分:0)

使用请求库。

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

注意:即使您在8081中托管了web.py,您也在网址中使用了端口8080