fix: remove Gunicorn field_size/body limits (8KB default was truncating uploads), bump 1.0.4→1.0.5
Deploy loadtest / validate (push) Waiting to run

This commit is contained in:
2026-07-10 20:19:03 +04:00
parent 6f55ea5998
commit d303985877
4 changed files with 49 additions and 2 deletions
+1 -1
View File
@@ -4,4 +4,4 @@ COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY site /app/site
EXPOSE 5000
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--timeout", "300", "--workers", "1", "site.app:app"]
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--timeout", "300", "--workers", "1", "--limit-request-field_size", "0", "--limit-request-body", "0", "site.app:app"]
+21
View File
@@ -0,0 +1,21 @@
# 2026-07-10 — Фикс обрезания файлов
## Проблема
Файлы > ~6 КБ обрезаются при загрузке. Даже 64 КБ не проходят.
## Причина
Gunicorn по умолчанию `--limit-request-field_size = 8190` (8 КБ).
Клиент отправляет файл как base64-строку в поле формы `data`.
Base64 на ~33% больше исходного файла → для файла 64 КБ поле будет ~85 КБ → Gunicorn обрезает до 8 КБ.
## Решение
1. `Dockerfile`: добавить `--limit-request-field_size 0 --limit-request-body 0`
2. `site/app.py`: bump версии 1.0.4 → 1.0.5
## Изменённые файлы
- `/home/naeel/nubes/loadtest/Dockerfile` — добавлены `--limit-request-field_size 0 --limit-request-body 0`
- `/home/naeel/nubes/loadtest/site/app.py` — версия 1.0.4 → 1.0.5
## Результат
- Синтаксис OK (`py_compile`)
- Готово к деплою
+26
View File
@@ -0,0 +1,26 @@
# Сессия 2026-07-10 — Начало
## Контекст
Новая сессия в workspace `loadtest`. История чата и session memory пусты.
## Что за проект
**loadtest** — сервис для тестирования скорости загрузки файлов.
- Flask + Gunicorn (Python 3.12), Docker
- Порт 5000
- Версия: 1.0.4
### Файлы
- `site/app.py` — сервер: `GET /` (index), `GET /health`, `POST /upload` (замер скорости)
- `site/templates/index.html` — веб-интерфейс с таблицей файлов
- `site/static/app.js` — логика клиента: выбор файлов, XHR загрузка, отображение прогресса/скорости
- `Dockerfile` — сборка и запуск через Gunicorn (timeout 300s, 1 worker)
- `requirements.txt` — flask, gunicorn
### Режимы загрузки
1. **Прямой (multipart)** — через `request.files`
2. **Base64** — через поле `data` в form (для прокси типа DDOS-Guard)
### Действия
- Создана папка `History/`
- Создан этот файл
+1 -1
View File
@@ -4,7 +4,7 @@ from flask import Flask, render_template, request
app = Flask(__name__)
VERSION = '1.0.4'
VERSION = '1.0.5'
@app.route('/')