==================
django-processinfo
==================
A reuseable Django application for collecing information about the running server processes.
We try to cause as little additional overhead: django-processinfo creates most of the time only one database query to update the data.
The most important data that django-processinfo will be captured:
* Process statistics:
* process PID, start time, life times
* Number of average/max living processes
* min/average/max response times
* Total request/exceptions count
* Memory statistics:
* min/average/max memory usage (VmRSS, VmPeak)
* System informations:
* System memory usage
* Swap usage
* load average
django-processinfo splits some of these data per SITE_ID, so you can see e.g. which site is mostly used.
What is it not:
* track user actions
* collect infos which are found in e.g. apache.log
* Its not a sourcecode profiler (read `https://code.djangoproject.com/wiki/ProfilingDjango <https://code.djangoproject.com/wiki/ProfilingDjango>`_)
more info: `https://www.python-forum.de/viewtopic.php?f=6&t=27168 <https://www.python-forum.de/viewtopic.php?f=6&t=27168>`_ (de)
----------
limitation
----------
This only works, if **/proc/$$/status** exists. So only on unix/linux like platforms, yet.
----
TODO
----
Add unittests
-----------
screenshots
-----------
Here `some screenshots (from v0.2 - 19.08.2011) <https://github.com/jedie/jedie.github.io/tree/master/screenshots/django-processinfo>`_ how it looks like:
----
|Screenshot 1|
.. |Screenshot 1| image:: https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/django-processinfo/20110819_django-processinfo-1.png
----
|Screenshot 2|
.. |Screenshot 2| image:: https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/django-processinfo/20110819_django-processinfo-2.png
-------
install
-------
1. install it e.g.:
::
pip install django-processinfo
2. add settings (see below)
3. create tables (run syncdb)
--------
settings
--------
add this to your settings.py:
::
import os
import django_processinfo
INSTALLED_APPS = (
...
'django_processinfo',
...
)
MIDDLEWARE = (
'django_processinfo.middlewares.ProcessInfoMiddleware',
...
)
# Put templates above admin contrib, e.g.:
TEMPLATE_DIRS = (
...
os.path.join(os.path.abspath(os.path.dirname(django_processinfo.__file__)), "templates/"),
...
)
# include app settings from ./django_processinfo/app_settings.py
from django_processinfo import app_settings as PROCESSINFO
# Change settings like this:
PROCESSINFO.ADD_INFO = True
ProcessInfoMiddleware
=====================
The **ProcessInfoMiddleware** can actually be inserted anywhere.
However, it should be added far above. Thus, to capture everything.
For performance enhancement, you can put **ProcessInfoMiddleware** after **LocalSyncCacheMiddleware**.
But then, however, lacks statistical values on every cache hit!
app settings
============
Available django-processinfo settings can you found in `./django_processinfo/app_settings.py <https://github.com/jedie/django-processinfo/blob/master/django_processinfo/app_settings.py>`_
--------------
developer info
--------------
e.g.:
::
~$ git clone https://github.com/jedie/django-processinfo.git
~$ cd django-processinfo
~/django-processinfo$ make
help List all commands
install-poetry install or update poetry
install install PyInventory via poetry
update update the sources and installation
lint Run code formatters and linter
fix-code-style Fix code formatting
tox-listenvs List all tox test environments
tox Run pytest via tox with all environments
tox-py36 Run pytest via tox with *python v3.6*
tox-py37 Run pytest via tox with *python v3.7*
tox-py38 Run pytest via tox with *python v3.8*
pytest Run pytest
update-rst-readme update README.rst from README.creole
publish Release new version to PyPi
run-dev-server Run the django dev server in endless loop.
run test project
================
There exists a test project that can be easy run localy using the django dev. server and SQLite database.
To run this project, do this:
::
~/django-processinfo$ make run-dev-server
You must also setup a test user, call this:
::
~/django-processinfo$ ./manage.sh createsuperuser
--------------------
Django compatibility
--------------------
+----------+------------------+------------------+
| Version | Python | Django |
+==========+==================+==================+
| >=v1.1.0 | 3.7,3.8,3.9,3.10 | 3.2,4.0,4.1 |
+----------+------------------+------------------+
| v0.9.0 | python 3 | django v2.2 LTS |
+----------+------------------+------------------+
| v0.8.0 | python 3 | django v1.11 LTS |
+----------+------------------+------------------+
| v0.7.0 | python 2 | django v1.5 |
+----------+------------------+------------------+
| v0.6.1 | python 2 | django v1.4 |
+----------+------------------+------------------+
-------
history
-------
* *dev* - `compare v1.1.0...master <https://github.com/jedie/django-processinfo/compare/v1.1.0...master>`_
* TBC
* `v1.1.0 - 16.08.2022 <https://github.com/jedie/django-processinfo/compare/v1.0.2...v1.1.0>`_
* Test against Django 3.2, 4.0 and 4.1 with Python 3.7, 3.8, 3.9 and 3.10
* Modernize project setup
* v1.0.2 - 09.12.2020 - `compare v1.0.1...v1.0.2 <https://github.com/jedie/django-processinfo/compare/v1.0.1...v1.0.2>`_
* Bugfix "DataError: smallint out of range" on bigger PID numbers
* v1.0.1 - 2.11.2020 - `compare v1.0.0...v1.0.1 <https://github.com/jedie/django-processinfo/compare/v1.0.0...v1.0.1>`_
* Bugfix injected footer
* Fix/cleanup change list
* Bugfix test project ``manage.sh``
* cleanup test project
* v1.0.0 - 1.11.2020 - `compare v0.9.0...v1.0.0 <https://github.com/jedie/django-processinfo/compare/v0.9.0...v1.0.0>`_
* modernize project setup using poetry
* Add a test project
* Add tests
* upgrade code style
* v0.9.0 - 26.02.2020 - `compare v0.8.0...v0.9.0 <https://github.com/jedie/django-processinfo/compare/v0.8.0...v0.9.0>`_
* Updates for Django 2.2
* v0.8.0 - 09.03.2018 - `compare v0.7.1...v0.8.0 <https://github.com/jedie/django-processinfo/compare/v0.7.1...v0.8.0>`_
* Updates for Python v3 and Django 1.11
* v0.7.1 - 20.08.2015 - `compare v0.6.3...v0.7.1 <https://github.com/jedie/django-processinfo/compare/v0.6.3...v0.7.1>`_
* Changes for django 1.5 support
* change setup install_requires to Django v1.3.x - v1.5.x
* Bugfix in templates: missed i18n
* v0.6.3 - 24.08.2012
* remove auto commit date from version
* v0.6.2
* Auto cleanup ProcessInfo table to protect against overloading.
* Don't insert django-processinfo "time cost" info if response.status_code is not 200
* v0.6.1
* Tested also with django v1.4
* change setup install_requires to Django v1.3.x - v1.4.x
* v0.6.0
* Add "Reset all data" in object tools.
* Make "Remove dead PIDs" and "Reset all data" available on both admin pages.
* v0.5.2
* `Bugfix if no SWAP used. <https://github.com/jedie/django-processinfo/issues/4>`_
* v0.5.1
* Add "Remove dead PIDs" as admin view in "Process statistics" object tools (top, right, grey links)
* v0.5.0
* Model changes: Please recreate tables, e.g.: ``./manage.py reset django_processinfo``
* New: Display some static system informations (uname, domain name, ip adress, python version, sys.prefix)
* New: current living processes (also per site)
* display sum of user/system mode time
* v0.4.1
* Bugfix for UnicodeEncodeError in setup: Use new solution, see: `https://code.google.com/p/python-creole/wiki/UseInSetup <https://code.google.com/p/python-creole/wiki/UseInSetup>`_
* v0.4
* Bugfix with "Total created processes"
* Display "Process lifetime"
* v0.3.0
* Display some system information from /proc/meminfo and 'load average'
* Many Bugfixes
* v0.2.0
* Many things changes! Recreate tables, e.g: ``./manage.py reset django_processinfo``
* v0.1.0
* first Version
--------
Donation
--------
* `paypal.me/JensDiemer <https://www.paypal.me/JensDiemer>`_
* `Flattr This! <https://flattr.com/submit/auto?uid=jedie&url=https%3A%2F%2Fgithub.com%2Fjedie%2Fdjango-reversion-compare%2F>`_
* Send `Bitcoins <http://www.bitcoin.org/>`_ to `1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F <https://blockexplorer.com/address/1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F>`_
-----
links
-----
+--------+---------------------------------------------------+
| GitHub | `https://github.com/jedie/django-processinfo`_ |
+--------+---------------------------------------------------+
| PyPi | `http://pypi.python.org/pypi/django-processinfo`_ |
+--------+---------------------------------------------------+
.. _https://github.com/jedie/django-processinfo: https://github.com/jedie/django-processinfo
.. _http://pypi.python.org/pypi/django-processinfo: http://pypi.python.org/pypi/django-processinfo
contact
=======
Come into the conversation, besides the github communication features:
+---------+--------------------------------------------------------+
| Forum | `http://www.pylucid.org/en/forum/10/`_ |
+---------+--------------------------------------------------------+
| IRC | #pylucid on freenode.net (Yes, the PyLucid channel...) |
+---------+--------------------------------------------------------+
| webchat | `http://webchat.freenode.net/?channels=pylucid`_ |
+---------+--------------------------------------------------------+
.. _http://www.pylucid.org/en/forum/10/: http://www.pylucid.org/en/forum/10/
.. _http://webchat.freenode.net/?channels=pylucid: http://webchat.freenode.net/?channels=pylucid
------------
``Note: this file is generated from README.creole 2022-08-16 18:56:10 with "python-creole"``