Gunicorn is a Python WSGI HTTP Server for UNIX, compatible with various web frameworks. Current version: 25.3.0. Released on March 27, 2026. Maintained by volunteers, with a stable release cadence.
pip install gunicornVerified import paths — ran on the pinned version, not inferred.
A minimal example of running a WSGI application with Gunicorn using the BaseApplication class.
Review Gunicorn's changelog and documentation for migration guidelines.
Verify the configuration file's validity and location before starting Gunicorn.
Review the complete log output and system environment for any preceding warnings, notices, or implicit failures. Investigate system-level errors, resource limitations, or unhandled exceptions that might prevent detailed error messages from being printed. Ensure proper permissions and dependency integrity.
Install gunicorn using `pip install gunicorn`. If the error persists for your application module, ensure you are running gunicorn from the correct directory, or explicitly specify the application path, e.g., `gunicorn myproject.wsgi:application` (run from the project root) or `gunicorn --chdir /path/to/project myproject.wsgi:application`.
Ensure the WSGI callable in your `wsgi.py` (or equivalent) file is named `application` or `app`. If it has a custom name, explicitly specify it in the gunicorn command, e.g., `gunicorn mymodule:my_custom_app_name`. Verify that `your_app_module_name` correctly points to the Python module containing your WSGI application.
Increase the `--timeout` setting in your gunicorn command (e.g., `gunicorn --timeout 120 ...` for 120 seconds). More importantly, debug and optimize the slow parts of your application code to reduce processing time, or ensure sufficient resources are available for your application.
Stop the process currently occupying the port, or configure Gunicorn to bind to a different available port or IP address (e.g., `gunicorn --bind 0.0.0.0:8001 ...`). You can identify the process using `sudo netstat -tulpn | grep :PORT_NUMBER` (replace `PORT_NUMBER` with the port Gunicorn is trying to use).
Verify the absolute path to your `gunicorn` executable within your virtual environment (e.g., by running `which gunicorn` after activating the virtual environment). Update the `ExecStart` directive in your systemd service file (e.g., `/etc/systemd/system/gunicorn.service`) with the correct path, ensuring the virtual environment is properly sourced or the full path to the virtualenv's gunicorn is used.