Poskytování velkých souborů

43 views
Skip to first unread message

x-time

unread,
Mar 6, 2010, 4:05:20 PM3/6/10
to django-cs
Ahoj, neřešili jste už někdo poskytování velikých souborů? Řešení je
sice i zde: http://www.djangosnippets.org/snippets/365/ ale na verzi
djanga 1.1.1, kterou používám, nefunguje..

Honza Král

unread,
Mar 10, 2010, 3:55:38 PM3/10/10
to djan...@googlegroups.com
Ahoj,

tohle bych resil pokud mozno mimo django, pokud to neni neco co musis
generovat, pouzil bych nejaky interni redirect ci neco podobneho (viz
treba perlbal reproxy).


Honza Král
E-Mail: Honza...@gmail.com
Phone: +420 606 678585

2010/3/6 x-time <xti...@gmail.com>:


> Ahoj, neřešili jste už někdo poskytování velikých souborů? Řešení je
> sice i zde: http://www.djangosnippets.org/snippets/365/ ale na verzi
> djanga 1.1.1, kterou používám, nefunguje..
>

> --
> Tento email jste dostali, protože odebíráte Google skupinu "django-cs".
> Zasílat příspěvky můžete na djan...@googlegroups.com
> Pro odhlášení ze skupiny pošlete email na django-cs-...@googlegroups.com
> Skupinu a další nastavení můžete najít na http://groups.google.cz/group/django-cs

x-time

unread,
Mar 10, 2010, 5:11:39 PM3/10/10
to django-cs
Jj díky za tip, mrknu na to, jinak včera po hodně dlouhém hledání
všude možně sem si projel z cviku skoro celou dokumentaci a narazil na
servírování souborů jenom apachem:
pro mod_wsgi: http://docs.djangoproject.com/en/1.1/howto/deployment/modwsgi/#serving-media-files
a pro mod_python: http://docs.djangoproject.com/en/1.1/howto/deployment/modpython/#id1
a když chce programátor povolit stahování souborů jen přihlášeným tak:
http://docs.djangoproject.com/en/1.1/howto/apache-auth/#howto-apache-auth
sice jsem to ještě nezkoušel, ale jestli by potom měl někdo zájem o
vzorový příklad, tak ho sem dám.


On 10 bře, 21:55, Honza Král <honza.k...@gmail.com> wrote:
> Ahoj,
>
> tohle bych resil pokud mozno mimo django, pokud to neni neco co musis
> generovat, pouzil bych nejaky interni redirect ci neco podobneho (viz
> treba perlbal reproxy).
>
> Honza Král

> E-Mail: Honza.K...@gmail.com


> Phone:  +420 606 678585
>
> 2010/3/6 x-time <xti...@gmail.com>:
>
>
>
> > Ahoj, neřešili jste už někdo poskytování velikých souborů? Řešení je

> > sice i zde:http://www.djangosnippets.org/snippets/365/ale na verzi

veena

unread,
Mar 11, 2010, 11:00:44 AM3/11/10
to django-cs
Že ty děláš nějakej pěknej warez server na djangu :-)

V.

On 6 bře, 22:05, x-time <xti...@gmail.com> wrote:
> Ahoj, neřešili jste už někdo poskytování velikých souborů? Řešení je

> sice i zde:http://www.djangosnippets.org/snippets/365/ale na verzi

x-time

unread,
Mar 11, 2010, 11:32:56 AM3/11/10
to django-cs
:-) ještě nevím, ale sdílení velkých souborů se hodí nejen na warez
servery ;-)

On 11 bře, 17:00, veena <vsto...@gmail.com> wrote:
> Že ty děláš nějakej pěknej warez server na djangu :-)
>
> V.
>
> On 6 bře, 22:05, x-time <xti...@gmail.com> wrote:
>
>
>
> > Ahoj, neřešili jste už někdo poskytování velikých souborů? Řešení je

> > sice i zde:http://www.djangosnippets.org/snippets/365/alena verzi

PavelZet

unread,
Nov 19, 2018, 11:59:30 AM11/19/18
to django-cs
Rád bych téma znovu, po pár letech otevřel, protože řeším podobný problém.
Potřebuji poskytovat soukromé soubory (většinou obrázky) aktuálně přihlášených uživatelů.
Problém je, že soubory mohou být velké (případné video) a nebo jich může být v jednu chvíli potřeba větší množství (řádově desítky).

Napadá mě řešení

a) jak to dělá asi většina - klasicky vzít soubor, přečíst, nastavit hlavičku a odeslat třeba přes HttpResponse
problém je ale paměťová náročnost, prodleva před response, vytěžování vlákna po dobu stahování

b) přes nějaký stream - tedy otevřít soubor, číst a hned ho posílat na výstup přes nějaký StreamResponse (nebo zmiňovaný FileWrapper?)
výhodou je minimální paměťová náročnost a žádná prodleva před stahováním
zůstává ale problém vytížení jednoho vlákna po dobu stahování

c) tajný soubor zpřístupnit ve veřejné media složce, ale cesta k souboru by byla utajena
řeší všechny problémy výše
ale přináší nový problém s veřejností souboru. pokud se link dostane ven nebo na google, může být problém

moje otázka zní: nelze řešit přístup k privátním souborům uživatele nějak elegantně, abych zbytečně nezahlcoval zdroje?
neumí věc řešit třeba nginx ?

díky za tipy


Dne sobota 6. března 2010 22:05:20 UTC+1 Michal Raška napsal(a):

Jirka Vejrazka

unread,
Nov 19, 2018, 12:03:44 PM11/19/18
to PavelZet
Ja to resim pres django-sendfile...
--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/ecbeb1d6-acb3-48c2-a621-7128c0c5e8d1%40googlegroups.com.
Další možnosti najdete na https://groups.google.com/d/optout.

PavelZet

unread,
Nov 19, 2018, 12:42:08 PM11/19/18
to django-cs
poslední relase před 2 lety a nepodporuje Python 3 :(


Dne pondělí 19. listopadu 2018 18:03:44 UTC+1 JirkaV napsal(a):

Jirka Vejrazka

unread,
Nov 19, 2018, 1:03:15 PM11/19/18
to PavelZet
To snad ne, mam to nasazene na produkci a urcite jedu na Py3. Vic ted nezjistim, nejsem u PC.

Petr Messner

unread,
Nov 19, 2018, 2:23:34 PM11/19/18
to djan...@googlegroups.com
Servírovat velké soubory přímo ze serveru je nic moc - dělá to hodně I/O (zvyšuje I/O latenci pro ostatní věci), vyprazdňuje to diskové a jiné cache, zahlcuje to bandwidth... Snažím se těmto řešením vyhnout. Nehledě na to, že to zabírá místo na disku, zvětšuje a prodlužuje backupy, replikaci...

Dneska máme cloudy - soubory se dají umístit na AWS S3. Google a Azure mají obdobné služby.

Soubor na AWS S3 můžeš umístit veřejně, aby si ho mohl každý stáhnout. Pokud ale chceš mít kontrolu nad tím, kdo ho může stahovat, tak ho na S3 umístíš neveřejně, a potom musíš pro lidi, kteří si ho budu chtít stáhnout, vygenerovat signed request (speciální odkaz), který jim bude po omezenou dobu fungovat.

To celé můžeš umístit za CloudFront CDN, aby to běhalo ještě rychleji :)

PM

Petr Messner

unread,
Nov 19, 2018, 3:14:47 PM11/19/18
to djan...@googlegroups.com


po 19. 11. 2018 v 17:59 odesílatel PavelZet <zeh...@gmail.com> napsal:
Rád bych téma znovu, po pár letech otevřel, protože řeším podobný problém.
Potřebuji poskytovat soukromé soubory (většinou obrázky) aktuálně přihlášených uživatelů.

moje otázka zní: nelze řešit přístup k privátním souborům uživatele nějak elegantně, abych zbytečně nezahlcoval zdroje?
neumí věc řešit třeba nginx ?

Ales Zoulek

unread,
Nov 19, 2018, 4:29:16 PM11/19/18
to djan...@googlegroups.com
Uz to tu padlo, ale pro jistotu.

Krom extremnich pripadu ty velky data nechces hnat django procesem. Takze bych volil
1. x-accel: Pokud si ty data chces resit na vlastnim webserveru (nginx).
2. S3: Umi to pohlidat unikatni url s tokenem v getu

Ja bych z pohodlnosti volil [2], abych nemusel resit zalohy a replikaci pri skalovani, ale knihovny jsou na oboje.


A.
------------------------------------------------------
Ales Zoulek
+420 604 332 515
------------------------------------------------------


--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.

starenka .

unread,
Nov 19, 2018, 4:43:54 PM11/19/18
to djan...@googlegroups.com
Taky je moznost si rict o url na s3 soubor a proxnout ho pres nginx, takze "neni videt" adresa na s3... 
-----
'aknerats'[::-1]

PavelZet

unread,
Nov 19, 2018, 5:05:36 PM11/19/18
to django-cs
x-accel a xSendFile, to je asi presne ono, musim vyzkouset. diky moc!

Ales Zoulek

unread,
Nov 19, 2018, 5:33:24 PM11/19/18
to djan...@googlegroups.com
> Taky je moznost si rict o url na s3 soubor a proxnout ho pres nginx, takze "neni videt" adresa na s3... 

Ty jo. To jsem vlastne presne delal. Jen jsem na to zapomnel :) Nekde bych k tomu nasel ten nginx snippet.

Dik!

------------------------------------------------------
Ales Zoulek
+420 604 332 515
------------------------------------------------------


Jirka Vejrazka

unread,
Nov 20, 2018, 2:00:51 AM11/20/18
to django-cs
Bych si dovolil podotknout, ze jsem to psal uz na zacatku ;-)  Django-sendfile je primitivni kod ( https://github.com/johnsensible/django-sendfile/blob/master/sendfile/backends/xsendfile.py ) ktery jen nastavuje hlavicku, aby webserver pouzil x-accel nebo xSendFile :)

  Jirka

On Mon, 19 Nov 2018 at 23:05, PavelZet <zeh...@gmail.com> wrote:
x-accel a xSendFile, to je asi presne ono, musim vyzkouset. diky moc!

--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte https://groups.google.com/d/msgid/django-cs/96e43ef8-d6b3-4f33-9d8e-107043acb56b%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages