web-dev-qa-db-fra.com

Où se trouve le fichier de configuration Gunicorn?

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.

27
kennysong

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.

22
Arnaud Joly

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
4
iamyojimbo

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

1
brokenfoot

Je l'ai fait après avoir lu la documentation:


  1. lors du déploiement de mon application via gunicorn, il existe généralement un fichier appelé Procfile
  2. ouvrir ce fichier, ajouter --timeout 600

enfin, mon Procfile serait comme:

Web: application gunicorn: app - timeout 600

0

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

0
Joe