Tengo una aplicación Flask ejecutándose en un servidor ubuntu remoto con Nginx y Uwsgi. No puedo subir archivos de más de ~200Kb.
Para hacer mi aplicación seguí este tutorial: https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04
al principio tuve el error 413 que arreglé agregando client_max_body_size 5M; en /etc/nginx/nginx.conf
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; client_max_body_size 5M; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; 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_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; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }Ahora no tengo ningún error, pero aún no puedo cargar archivos más grandes. También cambié el archivo de configuración de mi aplicación uwsgi:
[uwsgi] module = wsgi:app master = true processes = 10 limit-post = 20000000 ignore-sigpipe=true ignore-write-errors=true disable-write-exception=true socket = main.sock chmod-socket = 660 vacuum = true die-on-term = true logto= /var/log/uwsgi/%n.log¿Qué más puedo hacer para arreglarlo?
Parece que ha configurado las variables correctamente. ¿Quizás tiene la configuración MAX_CONTENT_LENGTH establecida en su aplicación Flask? Se vería algo como esto:
app.config['MAX_CONTENT_LENGTH'] = 50 * 1024 * 1024 # 50 MB De forma predeterminada, Flask no debería quejarse con solicitudes grandes, pero si esta variable está configurada, arrojará errores 413 cuando la solicitud exceda el valor especificado. Consulte aquí para obtener más información.
Por último, asegúrese de recargar Nginx y su servicio uWSGI con estos comandos:
> sudo systemctl restart nginx.service > sudo systemctl restart <yourservice>.service Los sufijos .service son opcionales.
Gracias Frank por tu respuesta, ha pasado un tiempo desde que abrí este post. Si no recuerdo mal, el error fue un poco más sutil: Flask no tiene una lógica de "reintento" incorporada de forma predeterminada. Esto, en combinación con el servidor más barato que pude encontrar para probar, contribuye al fracaso de algunas de las solicitudes más caras. La implementación de una lógica de "reintento" con el decorador de reintentos resolvió mi problema.