Basic usage
gunicorn -k gevent -t 300 -w 4 -b 0.0.0.0:9500 main:app
Gevent: asynchronous request handling
Timeout: 300 sec
# of worker processes: 4
Deploy with nginx
/etc/systemd/system/myapi.service
[Unit]
Description=Gunicorn instance for flask API
Requires=myapi.socket
After=network.target
[Service]
User=hubert
Group=hubert
WorkingDirectory=/home/hubert/projectdir
ExecStart=/home/hubert/miniconda3/bin/gunicorn -k gevent -t 300 -w 2 myapp:app
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
/etc/systemd/system/myapi.socket
[Unit]
Description=Gunicorn socket for my API.
[Socket]
ListenStream=/run/myapi.sock
# Our service won't need permissions for the socket, since it
# inherits the file descriptor by socket activation
# only the nginx daemon will need access to the socket
User=nginx
# Optionally restrict the socket permissions even more.
# Mode=600
[Install]
WantedBy=sockets.target
nginx site conf file
server {
listen 9800;
location / {
proxy_pass http://unix:/run/myapi.sock;
}
}