
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

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
тогда я вообще не понял, где тут какие-то проблемы
> залить на фтп и на тот же сервер сообщить что залито
если всё синхронное.
тут или удалась заливка, или нет. Тртьего не дано