Tornado-Profiler
A profiler measures endpoints defined in your tornado application.
Screenshots
Dashboard: Give a summary of all datas
If an endpoint has been accessed before, you can see its summary data as follows.
Filtering: Give filtered datas
You can create filters to get datas that meet the criterias.
Context: Give all details of a request
You can get all details of a request as you wish.
Installation
PyPI version:
$ pip install tornado-profiler
Development version:
$ pip install https://github.com/garenchan/tornado-profiler/zipball/master
Quick Start
Just add a few lines to you codes:
# demo.py
import tornado.ioloop
import tornado.web
from tornado_profiler import Profiler
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("main")
class HelloHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
app = tornado.web.Application([
(r"/", MainHandler),
])
# use to store measurement datas
backend = {
"engine": "sqlalchemy",
}
# instantiate profiler
profiler = Profiler(backend)
# do something to your app
profiler.init_app(app)
# you can add some rules that won't be profiled here
app.add_handlers(r".*", [
(r"/hello", HelloHandler),
])
return app
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Now run your demo.py and make some requests as follows:
$ curl http://127.0.0.1:8888/
$ curl http://127.0.0.1:8888/hello
If everything is ok, tornado-profiler will measure these requests. You can see the result heading to http://127.0.0.1:8888/tornado-profiler or get results as JSON http://127.0.0.1:8888/tornado-profiler/api/measurements
Data Storage Backend
You can use some databases to store your measurement data, such as SQLite, Mysql. The drivers we support are shown as follows:
SQLAlchemy
In order to use SQLAlchemy, just specify backend's engine as "sqlalchemy". This will use SQLite by default and save it to tornado_profiler.db in your working directory.
backend = {
"engine": "sqlalchemy",
}
If your want to change default sqlite database filename or use other databases, you need to set db_url manually:
backend = {
"engine": "sqlalchemy",
"db_url": "sqlite:///dbname.db",
}
backend = {
"engine": "sqlalchemy",
"db_url": "mysql+<driver-name>://user:password@<host>[:<port>]/<dbname>",
}
Setting some attributes of SQLAlchemy is also necessary, you just need to pass them into the backend dict:
backend = {
"engine": "sqlalchemy",
"db_url": "mysql+<driver-name>://user:password@<host>[:<port>]/<dbname>",
# attributes
"pool_recycle": 3600,
"pool_timeout": 30,
"pool_size": 30,
"max_overflow": 20,
}
In some scenarios, we do not want to persist measurement datas, we can use the in-memory database of SQLite and datas will be lost when your web server stops or restarts:
backend = {
"engine": "sqlalchemy",
"db_url": "sqlite://",
}
Other Drivers
coming soon!
Comment
If you have any other requirements, please submit PR or issues. I will reply to you as soon as possible.
Metadata
Release files for tornado-profiler 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tornado-profiler-1.0.0.tar.gz | 1.3 MB | Without provenance | Details for tornado-profiler-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tornado_profiler-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for tornado_profiler-1.0.0-py3-none-any.whl |
Total release size: 2.5 MB
Release files / tornado-profiler-1.0.0.tar.gz
| Download URL | tornado-profiler-1.0.0.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f7ba8422333d0886c070b06a0c5777e237175d20208efb386dc240400ac69392
|
|
BLAKE2b-256 checksum How to use checksums |
b153650b3d4c31213c71afba652d821d562298f8a03a70a8a2522ec9df1d5811
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / tornado_profiler-1.0.0-py3-none-any.whl
| Download URL | tornado_profiler-1.0.0-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59b977563c583ca553b921d88111fac49e534df8a375d5d437dcf2e0af8959ee
|
|
BLAKE2b-256 checksum How to use checksums |
668e9a4b34d81d2fa4cdf01d5b6f3fd96af3c6a0f45b54bd9a3ce5112e980469
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for tornado-profiler 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.