Hi everyone,
One of the most common questions we get about Plotly Cloud is some version of “where do I put my app’s data?”, and until now the answer was “somewhere else.” Anything your app wrote to disk was wiped on the next restart, redeploy, or wake from sleep. You could store files in S3 or host a remote database, but for many users that means filing a ticket with IT and waiting for access.
Now you have a new option: store your data on a persistent filesystem.
A persistent filesystem is durable, network-attached storage that belongs to your team. An app mounts it at a path (for example, /data) and reads and writes it like a normal folder. Files persist across restarts, redeploys, and sleep. Persistent filesystems are available on Pro and Enterprise plans.
Getting started
- Open your app → Settings → Persistent filesystems.
- Select Attach persistent filesystem, then pick an existing one or create a new one (Creators only).
- Enter a mount path and select Attach. Your app restarts with the filesystem mounted, so there’s nothing to republish.
A few things to know
- Use `journal_mode=DELETE` with SQLite, never WAL. During a redeploy, the old and new instances of your app briefly overlap, and WAL mode can corrupt the database when that happens. Keep to one writing app. Multiple Gunicorn workers inside that app are fine, and other apps can open the database in read-only mode (see the blog post for an example).
- Coordinate shared writes. If several apps write the same file, your code needs to handle the coordination. The easy way around this is to give each app its own folder, or to have a single app do the writing.
- Persistent filesystems are team-wide. Every Creator and every app on your team can access every persistent filesystem. Secrets still belong in environment variables.
- Keep your own copies. Persistent filesystems don’t have backups or snapshots yet, so export any data you can’t recreate.
- Turn off WAL for diskcache. diskcache, which is often used for background callbacks, uses WAL mode by default. If you keep a cache on a persistent filesystem, create it as shown in the docs.
- Your app does the file management. Browsing, uploading, and downloading from the Cloud UI is on our roadmap.
- You pay for what you store. There’s no need to pick a storage size up front. Storage is billed from your team’s credits and grows with your data. See pricing for details.
For more information, check out the docs and announcement post.
We’d love to hear your feedback as you use the feature, so let us know if you hit any snags, or have suggestions that would make it even better!