• Login

Copyright © T.I. S.r.l. 2026

Timings

Timing

Action Time Spent
Total Time 2.3799 ms
Controller Time 0.0913 ms
Render Time 1.4508 ms

Template

Total Time Engine Count Template Content Type
1.4508 ms kajiki - pubsub.templates.index text/html
1.2541 ms kajiki 1 pubsub.templates.index

Profiling

Calls Total Percall Cumu CumuPer Func
1 0.002 0.0020 0.06 0.0600 <tg/configurator/components/dispatch.py:113(_call_controller)>
1 0.014 0.0140 0.058 0.0580 <pubsub/controllers/root.py:29(index)>
1 0.008 0.0080 0.024999999999999998 0.0250 <tg/predicates.py:79(is_met)>
1 0.003 0.0030 0.017 0.0170 <tg/predicates.py:239(evaluate)>
1 0.012 0.0120 0.014 0.0140 <tg/predicates.py:39(unmet)>
2/1 0.004 0.0020 0.013 0.0130 <tg/support/objectproxy.py:18(__getattr__)>
1 0.006 0.0060 0.011 0.0110 <tg/request_local.py:239(_current_obj)>
1 0.004999999999999999 0.0050 0.006 0.0060 <tg/predicates.py:235(__init__)>
3/2 0.002 0.0007 0.004999999999999999 0.0025 {built-in method builtins.getattr}
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 'update' 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 'get' of 'dict' objects}
Request

GET

Nothing here.

POST

Nothing here.

Cookies

Nothing here.

Headers

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'

Request Attributes

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'']}"

Environ

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 '42196'
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 0x7ff506fa5980>
webob._parsed_query_vars (GET([]), '')
paste.registry <tg.support.registry.Registry object at 0x7ff506dc1c50>
repoze.who.api <repoze.who.api.API object at 0x7ff50719d490>
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 0x7ff507172cd0>
beaker.cache <beaker.cache.CacheManager object at 0x7ff5079e24d0>
beaker.session {'_domain': None, '_path': '/', '_id': '4734c23e0e2e467ead47b82e3241643f'}
beaker.get_session <bound method SessionApplicationWrapper._get_session of <tg.appwrappers.session.SessionApplicationWrapper object at 0x7ff5079e2650>>
webob.adhoc_attrs {'identity': None}
webob._parsed_cookies ({}, '')
Ming
No queries in executed by the controller.
Controllers

Mounted Controllers

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
Logging

Log Messages

Level Time Message Location
INFO 2026-01-21 20:27:04.601896 172.24.0.1 - - [2026-01-21 20:27:04] "GET /robots.txt HTTP/1.1" 404 26977 0.030756 <geventwebsocket/handler.py>:242
Inventing

Inventing Mode

Invending mode permits to see on the fly the result of your changes by automatically reloading the web page whenever your python code or the page template changes.
It is meant as a way to improve developer experience when experimenting with changes to the source code, just put your browser and your test editor one near the other and enable inventing mode to start experimenting.
Turn On
To permanently enable inventing mode when in debug add debugbar.inventing=True option to your application configuration.