Heroku 的 Djangocollectstatic 每次都会推送到 S3

2024-02-22

我将 django-storages 用于 S3(和 S3BotoStorage)的静态文件。当我从本地计算机收集静态时,行为符合预期,仅修改后的文件被推送到 S3。此过程需要 python-dateutils 1.5 来检查修改时间。

然而,在 Heroku 上执行相同的操作会导致每个文件都被推送,尽管设置是相同的。然后我查看了 Heroku 本身上文件的修改时间,看起来 os.stat(static_filename).st_mtime 与上次推送的时间相同。

这是预期的行为吗?即使 git 没有更改,heroku 也会复制文件吗?


尝试设置DISABLE_COLLECTSTATIC=1作为您的应用程序的环境设置 - 这应该禁止它在每次推送时运行。

详细信息请参阅这篇文章 -https://devcenter.heroku.com/articles/django-assets https://devcenter.heroku.com/articles/django-assets :

> Sometimes, you may not want Heroku to run collectstatic on your behalf.
> You can disable collectstatic by enabling user-env-compile as well:

$ heroku labs:enable user-env-compile
$ heroku config:set DISABLE_COLLECTSTATIC=1

我发现只需设置配置即可 - 无需同时启用user-env-compile- 这可能已经从实验室进入生产了吗?

注意,部署由 Heroku python buildpack 管理,您可以在此处看到 -https://github.com/heroku/heroku-buildpack-python/ https://github.com/heroku/heroku-buildpack-python/

EDIT 1

我刚刚对此进行了一系列测试,并且可以确认DISABLE_COLLECTSTATIC确实禁用了collectstatic,无论user-env-compile设置 - 我认为现在在主干道中(但这只是猜测)。似乎并不关心设置是什么 - 如果DISABLE_COLLECTSTATIC作为配置变量存在,它被使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Heroku 的 Djangocollectstatic 每次都会推送到 S3 的相关文章

随机推荐