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
Deploy loadtest / validate (push) Waiting to run
This commit is contained in:
+1
-1
@@ -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"]
|
||||
|
||||
@@ -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`)
|
||||
- Готово к деплою
|
||||
@@ -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
@@ -4,7 +4,7 @@ from flask import Flask, render_template, request
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
VERSION = '1.0.4'
|
||||
VERSION = '1.0.5'
|
||||
|
||||
|
||||
@app.route('/')
|
||||
|
||||
Reference in New Issue
Block a user