| Action | Time Spent |
|---|---|
| Total Time | 2.5270 ms |
| Controller Time | 0.0758 ms |
| Render Time | 1.4334 ms |
| Total Time | Engine | Count | Template | Content Type |
|---|---|---|---|---|
| 1.4334 ms | kajiki | - | pubsub.templates.index | text/html |
| 1.2817 ms | kajiki | 1 | pubsub.templates.index |
| Calls | Total | Percall | Cumu | CumuPer | Func |
|---|---|---|---|---|---|
| 1 | 0.003 | 0.0030 | 0.052 | 0.0520 | <tg/configurator/components/dispatch.py:113(_call_controller)> |
| 1 | 0.009000000000000001 | 0.0090 | 0.049 | 0.0490 | <pubsub/controllers/root.py:29(index)> |
| 1 | 0.006 | 0.0060 | 0.020999999999999998 | 0.0210 | <tg/predicates.py:79(is_met)> |
| 1 | 0.003 | 0.0030 | 0.014 | 0.0140 | <tg/predicates.py:239(evaluate)> |
| 2/1 | 0.003 | 0.0015 | 0.013 | 0.0130 | <tg/support/objectproxy.py:18(__getattr__)> |
| 1 | 0.009999999999999998 | 0.0100 | 0.011 | 0.0110 | <tg/predicates.py:39(unmet)> |
| 1 | 0.004999999999999999 | 0.0050 | 0.011 | 0.0110 | <tg/request_local.py:239(_current_obj)> |
| 3/2 | 0.004 | 0.0013 | 0.007 | 0.0035 | {built-in method builtins.getattr} |
| 1 | 0.004999999999999999 | 0.0050 | 0.006 | 0.0060 | <tg/predicates.py:235(__init__)> |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | <tg/predicates.py:32(__init__)> |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | <tg/support/registry.py:52(_current_obj)> |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | {method 'get' of 'dict' objects} |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | {method 'copy' of 'dict' objects} |
| 1 | 0.0 | 0.0000 | 0.0 | 0.0000 | {method 'disable' of '_lsprof.Profiler' objects} |
| 1 | 0.0 | 0.0000 | 0.0 | 0.0000 | {method 'update' of 'dict' objects} |
Nothing here.
Nothing here.
Nothing here.
| Name | Value |
|---|---|
| SERVER_SOFTWARE | 'gevent/1.4.0 gunicorn/20.0.4' |
| SCRIPT_NAME | '' |
| SERVER_NAME | 'mainserver-push' |
| SERVER_PORT | '8080' |
| REQUEST_METHOD | 'GET' |
| PATH_INFO | '/' |
| QUERY_STRING | '' |
| SERVER_PROTOCOL | 'HTTP/1.1' |
| REMOTE_ADDR | '172.24.0.1' |
| HTTP_HOST | 'push.sensors.staging.tigroup.dev' |
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)' |
| HTTP_ACCEPT | '*/*' |
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate' |
| HTTP_X_FORWARDED_FOR | '172.24.0.1' |
| HTTP_X_FORWARDED_HOST | 'push.sensors.staging.tigroup.dev' |
| HTTP_X_FORWARDED_PORT | '443' |
| HTTP_X_FORWARDED_PROTO | 'https' |
| HTTP_X_FORWARDED_SERVER | 'mainserver-traefik' |
| HTTP_X_REAL_IP | '172.24.0.1' |
| Name | Value |
|---|---|
| identity | None |
| response | "{'_status': '200 OK', '_headers': ResponseHeaders([('Cache-Control', 'no-cache'), ('Pragma', 'no-cache'), ('Content-Length', '0'), ('Content-Type', 'text/html; charset=utf-8')]), '_headerlist': [('Cache-Control', 'no-cache'), ('Pragma', 'no-cache'), ('Content-Length', '0'), ('Content-Type', 'text/html; charset=utf-8')], 'conditional_response': False, '_app_iter': [b'']}" |
| Name | Value |
|---|---|
| GATEWAY_INTERFACE | 'CGI/1.1' |
| SERVER_SOFTWARE | 'gevent/1.4.0 gunicorn/20.0.4' |
| SCRIPT_NAME | '' |
| wsgi.version | (1, 0) |
| wsgi.multithread | True |
| wsgi.multiprocess | False |
| wsgi.run_once | False |
| wsgi.url_scheme | 'http' |
| wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7ff507873850> |
| wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
| wsgi.input_terminated | True |
| SERVER_NAME | 'mainserver-push' |
| SERVER_PORT | '8080' |
| REQUEST_METHOD | 'GET' |
| PATH_INFO | '/' |
| QUERY_STRING | '' |
| SERVER_PROTOCOL | 'HTTP/1.1' |
| REMOTE_ADDR | '172.24.0.1' |
| REMOTE_PORT | '42106' |
| HTTP_HOST | 'push.sensors.staging.tigroup.dev' |
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)' |
| HTTP_ACCEPT | '*/*' |
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate' |
| HTTP_X_FORWARDED_FOR | '172.24.0.1' |
| HTTP_X_FORWARDED_HOST | 'push.sensors.staging.tigroup.dev' |
| HTTP_X_FORWARDED_PORT | '443' |
| HTTP_X_FORWARDED_PROTO | 'https' |
| HTTP_X_FORWARDED_SERVER | 'mainserver-traefik' |
| HTTP_X_REAL_IP | '172.24.0.1' |
| wsgi.input | <gevent.pywsgi.Input object at 0x7ff5076a1910> |
| webob._parsed_query_vars | (GET([]), '') |
| paste.registry | <tg.support.registry.Registry object at 0x7ff506db6490> |
| repoze.who.api | <repoze.who.api.API object at 0x7ff50716b150> |
| repoze.who.plugins | {'cookie': <AuthTktCookiePlugin 140690371520144>, 'form': <FastFormPlugin:/login_handler 140690371519952>, 'main_identifier': <FastFormPlugin:/login_handler 140690371519952>, 'tgappauth': <tg.configuration.auth.metadata._AuthMetadataAuthenticator object at 0x7ff5079e2b10>} |
| repoze.who.logger | <Logger auth (WARNING)> |
| paste.cookies | (<SimpleCookie: >, '') |
| tg.locals | <tg.wsgiapp.RequestLocals object at 0x7ff506ee1c50> |
| beaker.cache | <beaker.cache.CacheManager object at 0x7ff5079e24d0> |
| beaker.session | {'_domain': None, '_path': '/', '_id': 'ea616fef64cd482c8576f92d4d1ebf51'} |
| beaker.get_session | <bound method SessionApplicationWrapper._get_session of <tg.appwrappers.session.SessionApplicationWrapper object at 0x7ff5079e2650>> |
| webob.adhoc_attrs | {'identity': None} |
| webob._parsed_cookies | ({}, '') |
| Path | Controller | Exposed Methods |
|---|---|---|
| / | <class 'pubsub.controllers.root.RootController'> | index, usage, login, post_login, post_logout |
| /admin | <class 'tgext.admin.controller.AdminController'> | index, _lookup, lookup |
| /push | <class 'pubsub.controllers.push.PushController'> | index |
| /error | <class 'pubsub.controllers.error.ErrorController'> | document |
| /_debugbar | <class 'tgext.debugbar.controller.DebugBarController'> | perform_sql, perform_ming |
| /_debugbar/statics | <class 'tgext.debugbar.controller.StaticsController'> | _default |
| Level | Time | Message | Location |
|---|---|---|---|
| INFO | 2026-03-22 20:34:30.726803 | 172.24.0.1 - - [2026-03-22 20:34:30] "GET /robots.txt HTTP/1.1" 404 26986 0.015625 | <geventwebsocket/handler.py>:242 |