Elakadtam egy munkahelyi problémával. Azure storage hátterű Django (2.0.8) admin oldalról csak 5MB alatti fájlok feltöltése sikeres. Nagyobb fájloknál egy üres fehér képernyő a válasz, nem tudom (egyelőre) ledebuggolni, hogy hol is szakad meg a folyamat. Mintha nem is érne el nginx-ig a dolog... Gyanítom, hogy azzal van gond, hogy ilyenkor feldarabolná a nagy fájlt, és valami nem történik meg (jogosultság vagy port-hiba vagy hasonlók miatt). Próbálom a helyi gépemen is Azurite (Azure storage emulator segítségével megtalálni a dolog nyomát, de egyelőre nem látom, mert itt minden sikerül. Django-debug-toolbar sem vitt eddig előre.
Van köztetek olyan szakember, aki otthonosan mozog ebben a (python debug) témában? És esetleg segítene személyesen valami módon?
Megoldás: néhány modul frissítésével valahogy egyszer csak megoldódott a dolog. (De az is lehet, hogy az infrastruktúráért felelős kollégáim állítottak valamit Azure oldalon.)
- 1115 megtekintés
Hozzászólások
Lehet, hogy nincs elég hely a /tmp-ben vagy rossz a /tmp módja?. A Django alapból 2,5 MB-ig memóriába fogadja a feltöltött fájlt és ezután kezdi ideiglenes fájlba pakolni.
Lásd https://docs.djangoproject.com/en/2.1/ref/settings/#file-upload-max-mem… és https://docs.djangoproject.com/en/2.1/ref/settings/#file-upload-temp-dir
Limit lehet még a webszerverben is: https://stackoverflow.com/questions/26717013/how-to-edit-nginx-conf-to-…
--
$ grep -c egy$ word.list
100
- A hozzászóláshoz be kell jelentkezni
Köszi az ötleteket! A webszerver limitjét feltornásztam, inkább a másik téma okozhatja a gondot. Aminek van realitása, mert a saját gépemen van /tmp/, egy Azure rendszeren meg nemigen.
- A hozzászóláshoz be kell jelentkezni
Nekem egy PaaS környezetben mondjuk az jutna eszembe, erre van külön service, és nyilván van is:
https://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sa…
Mondjuk hogy az aktuális helyzetben melyik a jobb megoldás az jó kérdés
- A hozzászóláshoz be kell jelentkezni
Egyelőre nem látom a megoldást. A https://pypi.org/project/azure-storage-blob/ oldalon azt látom, hogy az azure-storage==0.36.0 határkő a frissítéskor (és nekünk az van). Ránk férne egy upgrade, de egyelőre fázom tőle. Van több olyan változónév, pl. AZURE_BLOB_MAX_MEMORY_SIZE, amit nem találok a saját fájlrendszerünkben greppel, viszont a https://django-storages.readthedocs.io/en/latest/backends/azure.html doksi szerint létezik.
Jó volna legalább valami kódlefedettséget látni (code coverage) interaktív módon, hogy "most kezdd", "most fejezd be" a lefedettségi mérést... Van ezzel tapasztalata valakinek? A django-coverage vagy coverage pip3 csomaggal?
(Próbálkoztam lsof használatával, de (talán a memóriába való behúzás miatt) így csak .so fájlokat mutogatott a rendszer.)
- A hozzászóláshoz be kell jelentkezni
Tud valaki esetleg oktatót, aki vállalna személyes időt python3 segítség ügyben?
- A hozzászóláshoz be kell jelentkezni
Biztos nem lehet megoldani javascriptből?
Egy javascript komponens feltölti direktbe az azure storage-ra, a django meg kap egy blob ID-t, hogy szia, feldobtam egy fájlt, kthxbye...
- A hozzászóláshoz be kell jelentkezni
Igazából itt a django saját admin felületéről van szó, abba nehezen tudok belenyúlni maszek javascripttel.
- A hozzászóláshoz be kell jelentkezni
Kíváncsi voltam és egy üres virtualenvbe telepítettem egy django-storages[azure] csomagot. A keresett settingsre a storages/backends/azure_storage.py hivatkozik.
--
$ grep -c egy$ word.list
100
- A hozzászóláshoz be kell jelentkezni
Köszi, hogy utánanéztél. A nálam levő verzióban a grep AZURE_BLOB_MAX_MEMORY_SIZE /usr/local/lib/python3.6/site-packages/storages/backends/azure_storage.py parancs nem ad vissza találatot; maga az azure_storage.py 120 soros. Az AZURE string is csak négyszer kerül elő benne:
account_name = setting("AZURE_ACCOUNT_NAME")
account_key = setting("AZURE_ACCOUNT_KEY")
azure_container = setting("AZURE_CONTAINER")
azure_ssl = setting("AZURE_SSL")
- A hozzászóláshoz be kell jelentkezni