@pydjango

Страница 434 из 1273
Kirill
08.08.2017
17:46:04
Ребят, пофрилансить по джанге никто не хочет?) На половину завтрашнего дня

Mikhail
08.08.2017
17:46:18
это зависит

можно писать во временный файл, можно в память. Можно даже в AMQP по идее

но в Вашем случае, мне кажется, от джанги вообще избавиться надо

Google
Mikhail
08.08.2017
17:46:44
в том плане, что не надо доверять ей аплоад

я бы сделал так

для хранения загружаемых файлов завёл бы корзину в амазоне на s3

написал бы на джанге простую вьюху, которая бы принимала метаинформацию о файле, который будет загружаться (оригинальное имя загружаемого файла, его mime-тип и размер), генерила авторизационный токен для заливки в эту корзину и возвращала его;

клиент бы аплоадил файл сразу в S3, передавая эту подпись

Гийденко
08.08.2017
17:49:03
Django will by default, put uploaded file data into memory if it is less than 2.5MB. Anything larger will be written to the server's /tmp directory and then copied across when the transfer completes.

Mikhail
08.08.2017
17:49:26
итого получается, что файл загружается один раз, браузер сам шлёт его чанками, оперативку на бэкенде не забиваем

Гийденко
08.08.2017
17:50:26
а сколько примерно стоит S3 хранилка?

и чего?
ну того что можно по дефолту большие файлы, это норм

разве что обрыв ознаает перезаливку

Mikhail
08.08.2017
17:51:19
вот аплоадите Вы гигабайт. Сначала от клиента он идёт на хост джанги, джанга этот гигабайт кидает в /tmp, потом оттуда же читает, чтобы кинуть в другое место

это просто лишние шаги, вот и всё

Google
Гийденко
08.08.2017
17:54:01
ну хорошо бы как торент. сразу занять место и туда писать чанками

потому и искал либу подходящую

Mikhail
08.08.2017
17:55:44
может, сперва с путём решения определиться, а потом уже с либами? ?

Гийденко
08.08.2017
17:56:47
https://www.dropbox.com/static/docs/opensource/Desktop_Client_FOSS_Notices.pdf вот тут например написано что дропбокс юзает библу librsync, но он вроде тоже темп использует, по крайней мере на стороне клиента, и так же режет файлик.

Mikhail
08.08.2017
17:58:19
я предложил два способа ?

Гийденко
08.08.2017
17:58:52
Сколько придется платить? За хранение каждого терабайта файлов нужно платить около 30 баксов в месяц. Кроме этого в 90 баксов обойдется каждый терабайт трафика.

учитывая объемы данных которые мне придется перекачивать это не очень комильфо на старте

Mikhail
08.08.2017
18:00:16
ну, если исходные файлы не удалять, то грустно, конечно

Гийденко
08.08.2017
18:00:21
мне предлагают гдето за 3к рублей кучу терабайт с безлимитным трафиком с админом на месте. я пока хочу это поюзать, но надо туда ставить своё приложение чтоб обслуживать заливку

Mikhail
08.08.2017
18:00:28
хотя на первый год S3 вроде как бесплатный

а

Гийденко
08.08.2017
18:01:04
кстати тоже вариант, я может оба варианта попробую для сравнить

Mikhail
08.08.2017
18:01:17
ну в таком случае всё примено то же самое и будет

только вместо s3 можно использовать webdav

поставить его на существующие мощности. И точно так же, как написано выше, аплоадить файлы обычным хттп напрямую с клиента, минуя джангу

Гийденко
08.08.2017
18:02:35
без джанги тоже можно конечно, если достаточно будет функционала

Mikhail
08.08.2017
18:02:36
о, или можно туда вкатить minio и получить собственный s3

вебдав существует же! Можно взять чисто питоновскую реализацию, а можно просто настроить nginx

ничего сложного.

Google
Mikhail
08.08.2017
18:03:41
но вариант с minio мне сейчас больше нравится

Гийденко
08.08.2017
18:03:55
вот про такие решения и спрашивал, правда с упором на джангу) но можно и без

Mikhail
08.08.2017
18:04:05
minio - это такая тулза, которая поднимает standalone-хранилище, совместимое с amazon s3

можно в виде извращения и на джанге написать. Но в этом случае рационально использовать лишь FileSystemStorage, что лично мне кажется дичью какой-то

Гийденко
08.08.2017
18:05:51
а в чем еще удобство minio? можно какойто функционал прикрутить дополнительно? эвенты есть? как можно вообще както влиять на него?

Mikhail
08.08.2017
18:06:55
за эвенты не скажу

скорее всего нету

но если работать с хранилищем не асинхронно, то как-то от меня улетает осознание, зачем они могут понадобиться

Гийденко
08.08.2017
18:08:55
мне надо например мониторить прогресс загрузки или факт окончания загрузки чтобы запустить какуюто проверку чтоли. ну както отслеживать процесс

Mikhail
08.08.2017
18:08:59
https://github.com/minio/minio/tree/master/docs/bucket/notifications

охохо

надо же

Mikhail
08.08.2017
18:09:29
если аплоадом занимается клиент (мне кажется, это разумное предположение), то пусть он прогресс и считает

Гийденко
08.08.2017
18:10:21
чтобы проверять ресурсы до фермы, потому что они погут разойтись на несколько компов и там проверяться несколько раз, а хорошо бы один раз сразу

Mikhail
08.08.2017
18:10:33
а операци с хранилищем атомарная. Пока 100% не закачалась, он не создастся

Гийденко
08.08.2017
18:11:07
ну это первый вариант который я рассматриваю, но ищу другие тоже. щас активный поиск чтобы потом отсеять лишнее) спрашиваю мнения

Mikhail
08.08.2017
18:11:43
ну вот по ссылке выше оказалось, что таки да, есть у minio события. И я про них не знал даже

Гийденко
08.08.2017
18:11:59
проверку можно делать конечно и на клиенте до заливки, пока что это самое приоритетное

Mikhail
08.08.2017
18:12:33
а проверки делать лучше высчитыванием контрольной суммы на клиенте

Google
Mikhail
08.08.2017
18:12:47
и её, контрольную сумму (и метаинфу о файле) можно уже и в базу писать

Гийденко
08.08.2017
18:12:48
нет, проверка не суммы а того что там пытаются залить

Mikhail
08.08.2017
18:12:53
сам файл, понятно, для этого не нужен

Гийденко
08.08.2017
18:13:37
чтоб чо лишнего не залили, типа скриптов например. ну то есть есть ограничения на типы файлов

всё сложно) упрощать буду попозж

но до первых строчек кода конечно

Mikhail
08.08.2017
18:16:12
если речь идёт о веб-приложении, я бы прям настоятельно рекомендовал

заливать файл напрямую на хранилище (не в джангу), используя javascript file api

Гийденко
08.08.2017
18:17:18
нет, десктоп клиент питонский

Admin
ERROR: S client not available

Гийденко
08.08.2017
18:17:32
веб тоже будет но не для заливки а для мониторинга

Mikhail
08.08.2017
18:17:58
им же, кстати, можно проверять mime-тип и не позволять аплоадить что-то отличное от разрешенных файлов. Но надо понимать, что жто не защита, а так, средства для удобства пользователя

нет, десктоп клиент питонский
зачем тогда вообще париться?

можно отказаться от хттп и хоть торрент использовать

Гийденко
08.08.2017
18:18:47
ну тип можно и подделать. хотя там есть жесть и посильнее, но о ней потом

я хотел фтп просто использовать но это както слишком влоб и безконтрольно. хотя вариант еще остается

Mikhail
08.08.2017
18:19:23
я-то думал, что речь об веб-морде. А в Вашей задаче джанга вообще не нужна, а не только как хранилище

Гийденко
08.08.2017
18:19:30
залить на фтп и на тот же сервер сообщить что залито

Mikhail
08.08.2017
18:19:50
заливка асинхронная?

Google
Гийденко
08.08.2017
18:19:51
ну тут я не совсем понял вопрос, потому что не до конца понимаю разницу)

что значит асинхронная?

Mikhail
08.08.2017
18:20:52
это как в яваскрипте

когда вторая инструкция начинает выполняться сразу же, не дожидаясь окончания первой

Гийденко
08.08.2017
18:21:29
висит клиент в трее, заливает потихому файлы по одному или в несколько потоков. вот и все дела

Mikhail
08.08.2017
18:21:34
а питон сам по себе* - синхронный. пока первая операция не закончится, вторая не начнётся

Гийденко
08.08.2017
18:21:50
ну что такое асинхрон я то знаю, в заливке файлов это что значит? учитыыывая что это не яваскрипт

ну заливка будет в тредах скорее всего

Mikhail
08.08.2017
18:22:15
ничего это не значит

amureki
08.08.2017
18:22:30
хотя на первый год S3 вроде как бесплатный
Он бесплатный до определенных лимитов

Mikhail
08.08.2017
18:22:38
просто как по мне, если файл заливается в есколько потоков, то это просто пул тредов, и всё

amureki
08.08.2017
18:22:53
Он бесплатный до определенных лимитов
Если превысить, будут забирать деньги и в первый год)

Mikhail
08.08.2017
18:22:55
каждый тред сам по себе синхронный

Гийденко
08.08.2017
18:23:17
ну тогда синхронная заливка в один поток, так как клиентов может быть несколько и чтоб както равномерно распределить нагрузку

может даже будут лимитировать количество подклчений

Mikhail
08.08.2017
18:23:52
Если превысить, будут забирать деньги и в первый год)
я знаю, почему и написал «вроде как». Плюс я недооценил масштабов бедствия

Гийденко
08.08.2017
18:24:23
например если админ настроит мне 8 потоков на сетевухе то буду ограничивать до 8 за раз, условно говоря.

Mikhail
08.08.2017
18:26:27
тогда я вообще не понял, где тут какие-то проблемы

> залить на фтп и на тот же сервер сообщить что залито

если всё синхронное.

тут или удалась заливка, или нет. Тртьего не дано

Страница 434 из 1273