[megoldva] django - big file upload to azure

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.)

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

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.)

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")