Cómo usar el sistema de archivos efímero de heroku

Estoy usando Python / Django en Heroku (Cedar Stack) y tengo un comando de administración que necesito escribir para extraer un archivo de un cubo S3 y procesarlo. No estoy seguro de entender cómo usar el sistema de archivos efímero. ¿Hay solo ciertos directorios que se puedan escribir? Encontré otro artículo que implicaba que solo había ciertas carpetas que podían escribirse (pero no parece aplicarse a la stack de Cedar). Encontré este artículo de desarrollo pero no entra en muchos detalles (nota: entiendo que es solo temporal. Solo necesito descomprimir el archivo y procesar el archivo). ¿Puedo simplemente crear una carpeta en cualquier lugar bajo la raíz de la aplicación? ¿Y cómo lo conseguiría? Parece que probablemente podría simplemente usar $ HOME. Hice algunas pruebas al conectarme a través de

$ heroku run bash 

y corriendo:

 $ echo #HOME 

devoluciones:

/ app

y corriendo:

 $ mkdir $HOME/tmp 

crea una carpeta en la raíz de la aplicación y se entrega con el mismo usuario y grupo que los otros archivos y carpetas.

Entonces … ¿algo que me falta aquí? ¿Una mejor manera de hacerlo? ¿Hay una variable de entorno del sistema operativo para esto? He ejecutado “env” y no veo uno mejor.

Puede crear un archivo en el directorio ‘/ tmp’ y ese archivo se destruirá una vez que se complete la solicitud. Estoy haciendo esto en Cedar, y no he tenido ningún problema.

Para comprender realmente el sistema de archivos efímero, debes entender qué es un dyno. Puede leer más sobre cómo funcionan las dynos . En pocas palabras, sin embargo, un proceso se ejecuta en Heroku en una máquina virtual con su propio sistema de archivos. Esa máquina virtual puede detenerse por varias razones, llevando consigo el sistema de archivos.

El sistema de archivos subyacente se destruirá cuando se reinicie una aplicación, se reconfigure (por ejemplo, heroku config ... ), se heroku config ... , etc. Por ejemplo, si tiene dos dininas web, escriba algunos archivos en el sistema de archivos efímero y escale a tres dinnos, esos archivos serán destruidos porque su aplicación se está ejecutando en nuevos dynos.

En general, el sistema de archivos efímero funciona igual que cualquier sistema de archivos. Directorios en los que tiene permiso para escribir, como $HOME y /tmp , puede escribir archivos en. Cualquier archivo que requiera permanencia debe escribirse en S3 o en una tienda duradera similar. Se prefiere S3 ya que Heroku se ejecuta en AWS y S3 ofrece algunas ventajas de rendimiento. Cualquier archivo que pueda recrearse a voluntad se puede almacenar en la tienda efímera del dyno.