La documentation de gunicorn parle de l'édition des fichiers de configuration, mais je ne sais pas du tout où il se trouve.
Probablement une réponse simple :) Je suis sur Amazon Linux AMI.
La réponse se trouve dans la documentation de gunicorn . http://docs.gunicorn.org/en/latest/configure.html
Vous pouvez spécifier le fichier de configuration avec .ini ou un script python.
Par exemple, du projet Django-skel
"""gunicorn WSGI server configuration."""
from multiprocessing import cpu_count
from os import environ
def max_workers():
return cpu_count()
bind = '0.0.0.0:' + environ.get('PORT', '8000')
max_requests = 1000
worker_class = 'gevent'
workers = max_workers()
Et vous pouvez exécuter le serveur en utilisant
gunicorn -c gunicorn.py.ini project.wsgi
Notez que project.wsgi correspond à l'emplacement de votre wsgi.
Voici un exemple de fichier: https://github.com/benoitc/gunicorn/blob/master/examples/example_config.py
Vous pouvez simplement commenter ce dont vous n’avez pas besoin et pointer ensuite Gunicorn comme ceci:
gunicorn -c config.py myproject:app
Les configurations par défaut sont lues à partir de site-packages/gunicorn/config.py
$ python -c "from distutils.sysconfig import get_python_lib; print('{}/gunicorn/config.py'.format(get_python_lib()))"
(output)
/somepath/flask/lib/python2.7/site-packages/gunicorn/config.py
Vous pouvez exécuter strace
pour voir quels fichiers, dans quel ordre sont ouverts par gunicorn
gunicorn app: app -b 0.0.0.0:5000
$ strace gunicorn app:app -b 0.0.0.0:5000
stat("/somepath/flask/lib/python2.7/site-packages/gunicorn/config", 0x7ffd665ffa30) = -1 ENOENT (No such file or directory)
open("/somepath/flask/lib/python2.7/site-packages/gunicorn/config.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/somepath/flask/lib/python2.7/site-packages/gunicorn/configmodule.so", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/somepath/flask/lib/python2.7/site-packages/gunicorn/config.py", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=53420, ...}) = 0
open("/somepath/flask/lib/python2.7/site-packages/gunicorn/config.pyc", O_RDONLY) = 6
gunicorn -c g_config.py app: app
$ strace gunicorn -c g_config.py app:app
// in addition to reading default configs, reads '-c' specified config file
stat("g_config.py", {st_mode=S_IFREG|0644, st_size=6784, ...}) = 0
open("g_config.py", O_RDONLY)
Au lieu de modifier le fichier de configuration dans les packages de site, créez un gconfig.py
local (n'importe quel nom) et définissez uniquement les variables pour lesquelles vous souhaitez définir une valeur autre que celle par défaut, car le fichier de configuration par défaut est toujours lu.
Passer comme gunicorn -c gconfig.py
$ cat gconfig.py // (eg)
bind = '127.0.0.1:8000'
workers = 1
timeout = 60
. . .
ou utilisez des options de ligne de commande au lieu d'un fichier de configuration:
gunicorn app:app -b 0.0.0.0:5000 -w 1 -t 60
attributs/drapeaux du fichier de configuration gunicorn: http://docs.gunicorn.org/fr/stable/settings.html#settings
Je l'ai fait après avoir lu la documentation:
enfin, mon Procfile serait comme:
Web: application gunicorn: app - timeout 600
Pour ce qui est des noms par défaut, Gunicorn recherchera un fichier de configuration nommé gunicorn.conf.py
selon https://github.com/benoitc/gunicorn/blob/master/gunicorn/config.py#L518