Hoe het efemerale bestandssysteem van Heroku

Ik gebruik Python / Django op Heroku (Cedar Stack) en ik heb een managementopdracht die ik moet schrijven die een bestand uit een S3-emmer zal trekken en het verwerken. Ik weet niet zeker of ik begrijp hoe ik het efemerale bestandssysteem kan gebruiken. Zijn er alleen bepaalde mappen die schrijfbaar zijn? Ik vond een ander artikel dat impliceerde dat er alleen bepaalde mappen waren die beschrijfbaar waren (maar het lijkt niet op de Cedar-stapel te solliciteren). Ik vond deze dev artikel maar het gaat niet veel detail in (Opmerking: Ik begrijp wel dat het gewoon tijdelijk is. Ik hoef alleen het bestand uit te pakken en het bestand te verwerken). Kan ik gewoon een map overal onder de root van de toepassing maken? En hoe zou ik dat krijgen? Het lijkt erop dat ik waarschijnlijk gewoon $ thuis zou kunnen gebruiken. Ik heb een beetje getest door verbinding te maken met VIA

$ heroku run bash

en hardlopen:

$ echo #HOME

Retouren:

/ app

en hardlopen:

$ mkdir $HOME/tmp

Creëert een map in de root van de app en geeft met dezelfde gebruiker en groep als de andere bestanden en mappen.

Dus … alles wat ik hier mis? Een betere manier om het te doen? Is er een OS-omgevingsvariabele hiervoor? Ik heb “env” uitgevoerd en ik zie geen betere.


Antwoord 1, Autoriteit 100%

Om het efemerale bestandssysteem echt te begrijpen, moet u begrijpen wat een dyno is. Je kunt meer lezen over hoe Dynos werkt. In een notendop loopt een proces echter op Heroku in een virtuele machine met zijn eigen bestandssysteem. Die virtuele machine kan om een ​​aantal redenen stoppen, het bestandssysteem ermee innemen.

Het onderliggende bestandssysteem zal worden vernietigd wanneer een app opnieuw is opgestart, opnieuw geconfigureerd (bijv. heroku config ...), geschaald, enz. Als u bijvoorbeeld twee webdynos hebt, schrijf dan een aantal bestanden naar Het efemale bestandssysteem en schaal tot drie dynos, die bestanden worden vernietigd omdat uw app op nieuwe dynos draait.

In het algemeen werkt het ephemerale bestandssysteem net als elk bestandssysteem. Mappen waartoe u toestemming hebt om naar te schrijven, zoals $HOMEen /tmp, u kunt bestanden schrijven naar. Alle bestanden die permanentie vereisen, moeten worden geschreven naar S3, of een vergelijkbare duurzame winkel. S3 heeft de voorkeur als Heroku-runs op AWS en S3 een aantal uitvoeringsvoordelen biedt. Alle bestanden die kunnen worden hergebruikt, kunnen worden opgeslagen op de Ephemeral Store van de Dyno.


Antwoord 2, Autoriteit 73%

U kunt een bestand maken onder de map ‘/ TMP’ en dat bestand wordt vernietigd nadat het verzoek is voltooid. Ik doe dit op Cedar, en ik heb geen problemen gehad.

Other episodes