отправить http поставить запрос в werkzeug - PullRequest
0 голосов
/ 30 декабря 2011

в своем веб-приложении я использую werkzeug для прослушивания и обработки запросов.В одной из функций мне нужно выслушать запрос (скажем, от A) и отправить запрос http на другой сервер (B), затем после получения ответа от B я отвечаю A ответом.

Я не очень знаком с werkzeug и не уверен, что он может отправлять запросы, поэтому я использовал httplib для отправки запросов.

Но я получаю ошибки.

Есть много движущихся частей, мне интересно следующее: 1. Имеет ли werkzeug возможность отправлять запросы 2. В чем причинаошибка

Оцените любую помощь.

Код:

def complete(self, request):
    if request.method == 'GET':
        location_id = self.extract_param_value(request,'location_id');
        status_code = self.extract_param_value(request,'status_code');

        req_url = something;
        jsonData = { 'data' : {'status' : status_code, 'id': location_id}};
        jsonDataDump = json.dumps(jsonData);
        #send request to B
        connection =  httplib.HTTPConnection(HOST, timeout=5);
        body_content = jsonDataDump;
        headers = {"Content-type": "application/json", "Accept": "text/plain"};
        connection.request('PUT', req_url, body_content, headers); #error occurs here
        result = connection.getresponse();
        connection.close();
        #return response to A
        response = Response(status=200);

        return response;

Ошибка:

        1**.1**.1**.** - - [30/Dec/2011 03:06:57] "GET //complete?location_id=615201308&status_code=LIVE&message=fine HTTP/1.1" 500 -
        Traceback (most recent call last):
        File "/home/ec2-user/y_ws.py", line 381, in __call__
        return self.wsgi_app(environ, start_response)
        File "/usr/lib/python2.6/site-packages/Werkzeug-0.8.1-py2.6.egg/werkzeug/wsgi.py", line 411, in __call__
            return self.app(environ, start_response)
          File "/home/ec2-user/y_ws.py", line 377, in wsgi_app
            response = self.dispatch_request(request);
          File "/home/ec2-user/y_ws.py", line 98, in dispatch_request
            return getattr(self, endpoint)(request, **values)
          File "/home/ec2-user/y_ws.py", line 184, in complete
           connection.request('PUT', y_req_url, body_content, headers);
          File "/usr/lib64/python2.6/httplib.py", line 914, in request
            self._send_request(method, url, body, headers)
          File "/usr/lib64/python2.6/httplib.py", line 951, in _send_request
            self.endheaders()
          File "/usr/lib64/python2.6/httplib.py", line 908, in endheaders
            self._send_output()
          File "/usr/lib64/python2.6/httplib.py", line 780, in _send_output
            self.send(msg)
          File "/usr/lib64/python2.6/httplib.py", line 739, in send
            self.connect()
          File "/usr/lib64/python2.6/httplib.py", line 720, in connect
            self.timeout)
          File "/usr/lib64/python2.6/socket.py", line 567, in create_connection
            raise error, msg
        error: [Errno 111] Connection refused

1 Ответ

1 голос
/ 03 января 2013
  1. Werkzeug - это не библиотека для выполнения HTTP-запросов, используйте httplib (как в вашем примере)
  2. Проверьте с помощью curl, успешно ли выполняется запрос от хост-машины для исключения проблем с сетью. Ошибка, которую вы получаете, является общей сетевой ошибкой.
...