2013-10-09 3 views
0

Я пробовал порт прокси (Python Proxy) в Google App Engine; Когда я бегу этот код в режиме развития, и пытается получить доступ к любой странице с помощью этого прокси я получаю следующую ошибку:Ошибка при портировании прокси-сервера в Google App Engine

INFO  2013-10-09 14:50:56,539 sdk_update_checker.py:245] Checking for updates to the SDK. 
INFO  2013-10-09 14:50:57,029 sdk_update_checker.py:289] This SDK release is newer than the advertised release. 
INFO  2013-10-09 14:50:57,046 api_server.py:138] Starting API server at: URL 
INFO  2013-10-09 14:50:57,058 dispatcher.py:168] Starting module "default" running at:URL 
INFO  2013-10-09 14:50:57,060 admin_server.py:117] Starting admin server at:URL 
ERROR 2013-10-09 14:51:04,284 webapp2.py:1528] __init__() takes exactly 4 arguments (3 given) 
Traceback (most recent call last): 
    File "/home/shekhar/appengine/python/google_appengine/lib/webapp2-2.3/webapp2.py", line 1511, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/home/shekhar/appengine/python/google_appengine/lib/webapp2-2.3/webapp2.py", line 1505, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/home/shekhar/appengine/python/google_appengine/lib/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/home/shekhar/appengine/python/google_appengine/lib/webapp2-2.3/webapp2.py", line 1076, in __call__ 
    handler = self.handler(request, response) 
TypeError: __init__() takes exactly 4 arguments (3 given) 
INFO  2013-10-09 14:51:04,289 module.py:599] default: "GET/HTTP/1.1" 500 228 

Прокси-код ниже

class ConnectionHandler: 
    def __init__(self, connection, address, timeout): 
     self.initialize(request, response); 
     self.client = connection 
     self.client_buffer = '' 
     self.timeout = timeout 
     self.method, self.path, self.protocol = self.get_base_header() 
     if self.method=='CONNECT': 
      self.method_CONNECT() 
     elif self.method in ('OPTIONS', 'GET', 'HEAD', 'POST', 'PUT', 
          'DELETE', 'TRACE'): 
      self.method_others() 
     self.client.close() 
     self.target.close() 
+0

init принимает 4 аргумента, и вы передаете его 3. Начать там? Получил отладчик? Посмотрите, с чем вы можете позвонить. –

ответ

0

Вы кажетесь определили пользовательский класс и использует его как обработчик ответа. Но у обработчиков ответов есть конкретный контракт: они должны принять request и response, а затем позвонить initialize. Обычно это делается путем наследования от webapp2.RequestHandler. См. Документацию по webapp2 по адресу overriding __init__.

Я понятия не имею, как вы ожидаете своих connection, address и timeout параметров, которые необходимо передать. Возможно, вы хотели переопределить get() вместо __init__()?

Смежные вопросы