【问题标题】:Django objects get deletes after a while automatically on heroku server一段时间后,Django 对象在 Heroku 服务器上自动被删除
【发布时间】:2018-08-12 23:34:56
【问题描述】:

有谁知道为什么我的 django 保存的对象在一段时间后被自动删除'这就像大多数时候我检查我的网站并看到我的一个文件从服务器自动删除一样,删除的对象也不是最后一个保存的对象,但倒数第三个或有时可能是倒数第二个对象...

我不认为这是我编写的代码的问题,因为这不会发生在本地开发服务器上,通常我会在一天中的某个时间持续运行开发服务器超过 4-5 小时..

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

【问题讨论】:

  • 你说的是文件还是数据库值?无论哪种方式,您都无法将内容保存到 Heroku 上的文件系统中。对于文件,使用 S3;对于 db 值,请确保您使用的是 PostgreSQL 插件而不是 Heroku。
  • opps ,这就是我的意思实际保存的对象(数据库对象)实例对象,保存的对象也不是文件的,而只是文本内容和 url 的再次不是文件......老兄,我认为 heroku 提供配置并激活了我默认的 PostgreSQL 插件,即使是免费用户也已经
  • 是的,但您需要实际配置 Django 才能使用它。你?显示 settings.py 的 DATABASES 部分。
  • 不知道你为什么要问这个问题,否则直到现在都不会存在一个在 10 天前创建的对象,但仍然可以查看我在 settings.py 中配置的数据库行
  • 不,这根本不是真的。 Heroku 文件系统是短暂的,这意味着它不会跨 dynos 持续存在;但是如果你的应用程序在同一个测功机上运行了十天,那么所有对象都会一直存在到那时。无论如何,正如我所说,您显然在这里使用的是 sqlite 而不是 Postgres。请参阅 Heroku 文档或 this question 了解如何设置它以使用 Postgres。

标签: python django heroku


【解决方案1】:

发生这种情况是由于 Dyno Manager

Heroku 文件系统是短暂的 - 这意味着在 dyno 运行时对文件系统的任何更改只会持续到该 dyno 关闭或重新启动。每个测功机都使用最新部署的文件系统的干净副本启动。这类似于有多少基于容器的系统(例如 Docker)运行。 要深入了解此链接:https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2016-08-28
    相关资源
    最近更新 更多