I tried putting this on staging and got: 2016-12-22 17:01:39,913 ERROR [waitress][Dummy-2] Exception when serving /login.html Traceback (most recent call last): File "/srv/karlstaging/staging/45/eggs/waitress-0.8.9-py2.7.egg/waitress/channel.py", line 337, in service task.service() File "/srv/karlstaging/staging/45/eggs/waitress-0.8.9-py2.7.egg/waitress/task.py", line 173, in service self.execute() File "/srv/karlstaging/staging/45/eggs/waitress-0.8.9-py2.7.egg/waitress/task.py", line 392, in execute app_iter = self.channel.server.application(env, start_response) File "/srv/karlstaging/staging/45/eggs/perfmetrics-2.0-py2.7.egg/perfmetrics/__init__.py", line 294, in app return nextapp(environ, start_response) File "/srv/karlstaging/staging/45/eggs/karl-4.23-py2.7.egg/karl/timeit.py", line 49, in __call__ resp = req.get_response(self.app) File "/srv/karlstaging/staging/45/eggs/WebOb-1.1.1-py2.7.egg/webob/request.py", line 1086, in get_response application, catch_exc_info=False) File "/srv/karlstaging/staging/45/eggs/WebOb-1.1.1-py2.7.egg/webob/request.py", line 1055, in call_application app_iter = application(self.environ, start_response) File "/srv/karlstaging/staging/45/eggs/guillotine-0.1-py2.7.egg/guillotine/__init__.py", line 10, in __call__ return self.app(environ, start_response) File "/srv/karlstaging/staging/45/eggs/repoze.vhm-0.13-py2.7.egg/repoze/vhm/middleware.py", line 106, in __call__ return self.application(environ, start_response) File "/srv/karlstaging/staging/45/eggs/repoze.browserid-0.3-py2.7.egg/repoze/browserid/middleware.py", line 134, in __call__ app_iter = self.app(environ, wrapper.wrap_start_response) File "/srv/karlstaging/staging/45/eggs/pyramid-1.2.1-py2.7.egg/pyramid/router.py", line 177, in __call__ has_listeners and notify(NewResponse(request, response)) File "/srv/karlstaging/staging/45/eggs/pyramid-1.2.1-py2.7.egg/pyramid/registry.py", line 61, in notify [ _ for _ in self.subscribers(events, None) ] File "/srv/karlstaging/staging/45/eggs/zope.component-3.6.0-py2.7.egg/zope/component/registry.py", line 315, in subscribers return self.adapters.subscribers(objects, provided) File "/srv/karlstaging/staging/45/eggs/zope.interface-3.8.0-py2.7-linux-i686.egg/zope/interface/adapter.py", line 583, in subscribers subscription(*objects) File "/srv/karlstaging/staging/45/eggs/karl-4.23-py2.7.egg/karl/subscribers.py", line 39, in request_logger user_agent = user_agents.parse(request.user_agent) File "/srv/karlstaging/staging/45/eggs/user_agents-1.0.1-py2.7.egg/user_agents/parsers.py", line 226, in parse return UserAgent(user_agent_string) File "/srv/karlstaging/staging/45/eggs/user_agents-1.0.1-py2.7.egg/user_agents/parsers.py", line 125, in __init__ ua_dict = user_agent_parser.Parse(user_agent_string) File "/srv/karlstaging/staging/45/eggs/ua_parser-0.7.2-py2.7.egg/ua_parser/user_agent_parser.py", line 222, in Parse 'user_agent': ParseUserAgent(user_agent_string, **jsParseBits), File "/srv/karlstaging/staging/45/eggs/ua_parser-0.7.2-py2.7.egg/ua_parser/user_agent_parser.py", line 249, in ParseUserAgent family, v1, v2, v3 = uaParser.Parse(user_agent_string) File "/srv/karlstaging/staging/45/eggs/ua_parser-0.7.2-py2.7.egg/ua_parser/user_agent_parser.py", line 51, in Parse match = self.user_agent_re.search(user_agent_string) TypeError: expected string or buffer