2016-07-07 3 views
0

Je reçois 499 sur le côté serveur de mon application (sur nginx) et 504 sur le côté client. Le délai d'attente par défaut pour le client est de 5000 secondes et la réponse que j'obtiens est exactement après 60 secondes.Demande de délai d'attente dans nginx

Ci-dessous le nginx.conf pour mon application.

user www-data; 
worker_processes auto; 
pid /run/nginx.pid; 

events { 
     worker_connections 768; 
     # multi_accept on; 
} 

http { 
     sendfile on; 
     tcp_nopush on; 
     tcp_nodelay on; 
     keepalive_timeout 65; 
     types_hash_max_size 2048; 
     underscores_in_headers on; 
     include /etc/nginx/mime.types; 
     default_type application/octet-stream; 

     ## 
     # SSL Settings 
     ## 

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE 
     ssl_prefer_server_ciphers on; 

     ## 
     # Logging Settings 
     ## 

     access_log /var/log/nginx/access.log; 
     error_log /var/log/nginx/error.log; 

     ## 
     # Gzip Settings 
     ## 

     gzip on; 
     gzip_disable "msie6"; 

     # gzip_vary on; 
     # gzip_proxied any; 
     # gzip_comp_level 6; 
     # gzip_buffers 16 8k; 
     # gzip_http_version 1.1; 
     # gzip_types text/plain text/css application/json   
     application/javascript text/xml application/xml application/xml+rss text/javascript; 
     include /etc/nginx/conf.d/*.conf; 
     include /etc/nginx/sites-enabled/*; 
    } 

gunicorn config est:

bind = '127.0.0.1:8001' 
backlog = 2048 
workers = 8 
worker_class = 'sync' 
worker_connections = 1000 
timeout = 300 
keepalive = 2 
spew = False 
daemon = False 
pidfile = None 
umask = 0 
user = None 
group = None 
tmp_upload_dir = None 
errorlog = 'gunicorn_error.log' 
loglevel = 'info' 
accesslog = 'gunicorn_access.log' 
proc_name = None 
def post_fork(server, worker): 
    server.log.info("Worker spawned (pid: %s)", worker.pid) 

def pre_fork(server, worker): 
    pass 

def pre_exec(server): 
    server.log.info("Forked child, re-executing.") 

def when_ready(server): 
    server.log.info("Server is ready. Spawning workers") 

def worker_int(worker): 
    worker.log.info("worker received INT or QUIT signal") 

    ## get traceback info 
    import threading, sys, traceback 
    id2name = dict([(th.ident, th.name) for th in threading.enumerate()]) 
    code = [] 
    for threadId, stack in sys._current_frames().items(): 
     code.append("\n# Thread: %s(%d)" % (id2name.get(threadId,""), 
      threadId)) 
     for filename, lineno, name, line in traceback.extract_stack(stack): 
      code.append('File: "%s", line %d, in %s' % (filename, 
       lineno, name)) 
      if line: 
       code.append(" %s" % (line.strip())) 
    worker.log.debug("\n".join(code)) 

def worker_abort(worker): 
    worker.log.info("worker received SIGABRT signal") 

Quelqu'un peut-il me dire exactement pourquoi est-ce qui se passe? Aussi comment puis-je le rectifier.

Répondre

0

J'ai eu le même problème avec la commande longue exécution. Je résoudre ce problème avec config similaire pour point final racine dans la configuration nginx:

location/{ 
    proxy_pass http://127.0.0.1:8001; 
    ... 
    proxy_connect_timeout 5000s; 
    proxy_read_timeout 5000s; 
} 

attention à proxy_connect_timeout et proxy_read_timeout.

Il peut aussi être utile de retourner une réponse rapide à l'utilisateur comme «Traitement ...» ou «Chargement ...» et d'exécuter la tâche principale en arrière-plan.