Сервер gunicorn
Сервер gunicorn представляет собой WSGI-сервер для Unix-систем, который запускает приложение Bottle и управляет рабочими процессами. Gunicorn (Green Unicorn) является одним из самых популярных серверов для развёртывания Python-приложений в продакшене. Он позволяет гибко настраивать количество воркеров и потоков, а также обеспечивает стабильную работу под высокой нагрузкой.
В контексте Bottle сервер gunicorn запускается через командную строку с указанием модуля приложения. Bottle предоставляет встроенную поддержку gunicorn, что позволяет запускать приложение без дополнительной настройки WSGI-интерфейса.
Основные параметры сервера gunicorn:
-w или --workers - количество рабочих процессов;
-b или --bind - адрес и порт для прослушивания;
-k или --worker-class - тип рабочих процессов;
--threads - количество потоков на каждый рабочий процесс;
--reload - автоматическая перезагрузка при изменении кода.
Синтаксис
gunicorn [options] module:app
Пример
Давайте создадим простое приложение Bottle и запустим его через gunicorn:
from bottle import Bottle
app = Bottle()
@app.route('/')
def index():
return 'hello'
Запустим сервер gunicorn с одним рабочим процессом на порту 8080:
gunicorn -w 1 -b 0.0.0.0:8080 app:app
После запуска сервер будет доступен по адресу http://localhost:8080/. Результат выполнения запроса:
hello
Пример
Давайте запустим gunicorn с несколькими рабочими процессами и потоками для обработки высокой нагрузки:
gunicorn -w 4 --threads 2 -b 0.0.0.0:8080 app:app
Эта команда запустит 4 рабочих процесса, каждый из которых будет использовать 2 потока. Общее количество одновременных обработчиков составит 8.
Пример
Давайте добавим автоматическую перезагрузку сервера при изменении кода:
gunicorn -w 1 --reload -b 0.0.0.0:8080 app:app
При изменении файла app.py сервер автоматически перезагрузится. Это удобно использовать в процессе разработки.