Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как и много файлов из формы на e-mail послать, и память сохранить. [RSS Feed]

#1 Март 17, 2010 08:08:39

tezro
От:
Зарегистрирован: 2009-12-09
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

Как и много файлов из формы на e-mail послать, и память сохранить.

В общем, есть форма на 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()
Я понимаю, что это коряво - научите правильно. Или обмажьте меня ссылкой на “как отправлять файлы из форм по электронной почте без затрат памяти”.

Спасибо.



Офлайн

#2 Март 17, 2010 18:42:48

alecs
От:
Зарегистрирован: 2010-03-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как и много файлов из формы на e-mail послать, и память сохранить.

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



Офлайн

#3 Март 19, 2010 18:11:12

tezro
От:
Зарегистрирован: 2009-12-09
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

Как и много файлов из формы на e-mail послать, и память сохранить.

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

Сразу возник вопрос: джанга загружает все файлы без проблем, даже если их 20 штук по 20 мегов. Только вот память не очищает. Как решить это? Запись чанками не помогает.



Офлайн

  • Начало
  • » Django
  • » Как и много файлов из формы на e-mail послать, и память сохранить.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version