• Login

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

Timings

Timing

Action Time Spent
Total Time 2.7680 ms
Controller Time 0.0532 ms
Render Time 1.7715 ms

Template

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

Profiling

Calls Total Percall Cumu CumuPer Func
1 0.001 0.0010 0.037 0.0370 <tg/configurator/components/dispatch.py:113(_call_controller)>
1 0.007 0.0070 0.036000000000000004 0.0360 <pubsub/controllers/root.py:29(index)>
1 0.006 0.0060 0.017 0.0170 <tg/predicates.py:79(is_met)>
1 0.002 0.0020 0.011 0.0110 <tg/predicates.py:239(evaluate)>
1 0.007 0.0070 0.009000000000000001 0.0090 <tg/predicates.py:39(unmet)>
2/1 0.002 0.0010 0.008 0.0080 <tg/support/objectproxy.py:18(__getattr__)>
1 0.003 0.0030 0.006 0.0060 <tg/request_local.py:239(_current_obj)>
1 0.003 0.0030 0.004 0.0040 <tg/predicates.py:235(__init__)>
3/2 0.002 0.0007 0.004 0.0020 {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 '60436'
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 0x7ff5076821a0>
webob._parsed_query_vars (GET([]), '')
paste.registry <tg.support.registry.Registry object at 0x7ff5073022d0>
repoze.who.api <repoze.who.api.API object at 0x7ff5075265d0>
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 0x7ff5074a8850>
beaker.cache <beaker.cache.CacheManager object at 0x7ff5079e24d0>
beaker.session {'_domain': None, '_path': '/', '_id': '702d54b12bb14bb396ee704ebeadf46a'}
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 2025-12-06 02:20:54.121593 172.24.0.1 - - [2025-12-06 02:20:54] "GET /robots.txt HTTP/1.1" 404 27063 0.022155 <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.