django-server-controller
Django server controllers, e.g. UwsgiController, GunicornController.
Install
pip install django-server-controller
Django Command Help
C:\Workspace\my_django_project>python manage.py wsgi-server --help
Usage: manage.py wsgi-server [OPTIONS] COMMAND [ARGS]...
Options:
--version Show the version and exit.
-h, --help Show this message and exit.
-v, --verbosity INTEGER RANGE Verbosity level; 0=minimal output, 1=normal
output, 2=verbose output, 3=very verbose
output.
--settings SETTINGS The Python path to a settings module, e.g.
"myproject.settings.main". If this is not
provided, the DJANGO_SETTINGS_MODULE
environment variable will be used.
--pythonpath PYTHONPATH A directory to add to the Python path, e.g.
"/home/djangoprojects/myproject".
--traceback / --no-traceback Raise on CommandError exceptions.
--color / --no-color Enable or disable output colorization.
Default is to autodetect the best behavior.
Commands:
reload Reload uwsgi server.
restart Restart uwsgi server.
start Start uwsgi server.
status Get uwsgi server's status.
stop Stop uwsgi server.
Usage
pro/settings.py
INSTALLED_APPS = [
...
'django_server_controller',
...
]
WSGI_SERVER_ENGINE = "uwsgi" # required. uwsgi or gunicorn, default to uwsgi.
#
# optional config items
#
WSGI_PROJECT_NAME = xxx # used for name of the default pidfile
WSGI_PROJECT_BASE = xxx
WSGI_LOGS_ROOT = xxx
WSGI_PIDFILE = xxx
WSGI_CONFIG_FILE = xxx
WSGI_BIN = xxx
KILL_BIN = xxx # used for send signal to gunicorn process, no use for uwsgi
- Add django_server_controller into INSTALLED_APPS, so that we can use it's django-management-commands.
- You can add server settings in django's settings.py. If not provide, the default values are used.
- UWSGI_PROJECT_BASE defaults to current directory. Suggest you set this variable.
- CONFIG_FILE search orders for uwsgi server engine:
- settings.CONFIG_FILE pointed file.
- settings.WSGI_PROJECT_BASE + "./etc/wsgi.ini"
- ./etc/wsgi.ini
- ~/etc/wsgi.ini
- python-lib-root/lib/python3.6/site-packages/the_project_package/wsgi.ini
- CONFIG_FILE search orders for gunicorn server engine:
- settings.CONFIG_FILE pointed file.
- settings.WSGI_PROJECT_BASE + "./etc/wsgi.conf.py"
- ./etc/wsgi.conf.py
- ~/etc/wsgi.conf.py
- python-lib-root/lib/python3.6/site-packages/the_project_package/wsgi.conf.py
Suggest project folders
./bin/
./etc/
./lib/
./lib64/
./web/
./web/static/
./web/upload/
./logs/
- suggest you use virtualenv.
- bin/lib/lib64 folders are created by virutalenv.
- etc/web/logs folders are ours.
Example template of wsgi.ini
[uwsgi]
socket=0.0.0.0:5501
http=0.0.0.0:5502
stats=0.0.0.0:5503
chdir=/home/your-project-name
processes=2
threads=40
listen=1024
master=True
daemonize=/home/your-project-name/logs/uwsgi.log
Example template of wsgi.conf.py
bind = ["0.0.0.0:5505"]
workers = 2
threads = 40
max_requests = 10000
daemon = True
chdir = /home/your-project-name
accesslog = "/var/logs/pro1/gunicorn.access.log"
errorlog = "/var/logs/pro1/gunicorn.error.log"
keepalive = 300
timeout = 300
graceful_timeout = 300
loglevel = "info"
Notice
- Many nginx set
keepaliveto 60 seconds, but gunicornkeepalivedefaults to 2 seconds, this may cause many 502 errors. So that set the gunicorn'skeepalivevalue to higher than 60 seoncds, for example 300 seonds.
Releases
v0.1.0
- First release.
v0.1.1
- Fix psutil import problem.
v0.1.2
- Fix reload parameter problem.
v0.1.3
- Fix time import problem.
v0.2.0
- Use as django's command.
v0.2.1
- Add django-click in requriements.txt.
- Change uwsgi_ini_file search order, and uwsgi_bin search order.
- Update document.
v0.3.0
- Add GunicornController.
v0.3.2
- Add project_base folder to uwsgi/gunicorn's pythonpath.
v0.4.0
- Stop command will wait for server to stop. Use --force to kill the server by force if stopping timeout.
- Add subcommand show-wsgi-config-file to show current wsgi.conf.py path.
- Add subcommand show-wsgi-config-file-paths to show wsgi.conf.py searching paths.
v0.5.0
- Set default web root to project base.
v0.5.1
- Doc update.
v0.5.4
- Doc update.
Metadata
Release files for django-server-controller 0.5.4
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 |
|---|---|---|---|---|
| django_server_controller-0.5.4.tar.gz | 9.5 kB | Without provenance | Details for django_server_controller-0.5.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_server_controller-0.5.4-py3-none-any.whl | Python 3 | none | any | Details for django_server_controller-0.5.4-py3-none-any.whl |
Total release size: 18.1 kB
Release files / django_server_controller-0.5.4.tar.gz
| Download URL | django_server_controller-0.5.4.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66c78e804fd593b7f5a2fe7a8c43a9ec076e561129a651aba7c99dac5a435b62
|
|
BLAKE2b-256 checksum How to use checksums |
0d1da2e57c16bbef420dffc7c2b8810ad5ca5d01c786c8674ca10861a2a64027
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.12
|
Release files / django_server_controller-0.5.4-py3-none-any.whl
| Download URL | django_server_controller-0.5.4-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d1cf986c2b67b5626445a83a65cb924c9e3782d8ab6841795616f6210484535
|
|
BLAKE2b-256 checksum How to use checksums |
55730ed9a4c700272b3a71db042da8e88abd43c2877d7597caaba45df286fa99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.12
|
Security for django-server-controller 0.5.4
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.