Найти - Пользователи
Полная версия: Как и много файлов из формы на e-mail послать, и память сохранить.
Начало » Django » Как и много файлов из формы на e-mail послать, и память сохранить.
1
tezro
В общем, есть форма на 20 файлов. Эти файлы я хочу послать на почту после отправки. Но, некоторые умельцы прикладывают файлы по 10-20 мегабайт каждый и Джанга при отправке коллапсирует. Съедая тонны оперативки и, в конце, падает.

Что я делаю не так (ведь явно что-то не так)? Каждый элемент формы это просто:
image20 = forms.ImageField()
После валидации, например:
from django.core.mail import send_mail, EmailMessage
email = EmailMessage
for (k, v) in request.FILES.items():
email.attach(v.name, v.read())
email.send()
Я понимаю, что это коряво - научите правильно. Или обмажьте меня ссылкой на “как отправлять файлы из форм по электронной почте без затрат памяти”.

Спасибо.
alecs
Попробуй до 1 мб уменьшить FILE_UPLOAD_MAX_MEMORY_SIZE.
Вообще ты уверен что коллапсирует именно Django / Web server? Если отправлять большой файл , то коллапсировать будет браузер / оперативная память клиентской машины.
Я не знаю каким ты сервером пользуешься , но у апача есть LimitRequestBody. Это конечно крайняя мера так сказать , но смотри сам :)
tezro
alecs
Попробуй до 1 мб уменьшить FILE_UPLOAD_MAX_MEMORY_SIZE.
Вообще ты уверен что коллапсирует именно Django / Web server? Если отправлять большой файл , то коллапсировать будет браузер / оперативная память клиентской машины.
Я не знаю каким ты сервером пользуешься , но у апача есть LimitRequestBody. Это конечно крайняя мера так сказать , но смотри сам :)
В итоге выяснил, что коллапсирует почтовый сервер, который не шлёт письма больше 20 мегабайт. Решил сохранять фалйлы на диск и давать ссылки в письме на них.

Сразу возник вопрос: джанга загружает все файлы без проблем, даже если их 20 штук по 20 мегов. Только вот память не очищает. Как решить это? Запись чанками не помогает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB