python - webapp2/wsgiref: "multiple values for keyword argument" when running on WSGI server -
the following code raises error if run on wsgi server, not otherwise.
class handler(webapp2.requesthandler): def __init__(self, template, *args, **kwargs): print "kwargs in handler:", kwargs self.template = template super(handler, self).__init__(*args, **kwargs) class mainhandler(handler): def __init__(self, *args, **kwargs): template = jinja_env.get_template("helloworld.html") print "kwargs in mainhandler:", kwargs super(mainhandler, self).__init__(template= template, *args, **kwargs)
if run on server, doing
from wsgiref.simple_server import make_server server = make_server('localhost', 8000, app); while true: server.handle_request()
and trying visit localhost:8080
, get
kwargs in mainhandler: {} error:root:__init__() got multiple values keyword argument 'template' traceback (most recent call last): file "/media/data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1535, in __call__ rv = self.handle_exception(request, response, e) file "/media/data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1529, in __call__ rv = self.router.dispatch(request, response) file "/media/data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1278, in default_dispatcher return route.handler_adapter(request, response) file "/media/data/code/kaiwarta/env/local/lib/python2.7/site-packages/webapp2.py", line 1101, in __call__ handler = self.handler(request, response) file "main.py", line 24, in __init__ super(mainhandler, self).__init__(template= template, *args, **kwargs) typeerror: __init__() got multiple values keyword argument 'template'
(note kwargs
empty before being passed handler.)
but if don't start server , foo = mainhandler()
instead, runs expected:
kwargs in mainhandler: {} kwargs in handler: {}
what's going wrong in first case?
Comments
Post a Comment