出现意外问题,我最近尝试在Heroku上为app运行collectstatic的时间无限期:
Running `python manage.py collectstatic` attached to terminal... up, run.6250
/app/.heroku/python/lib/python2.7/site-packages/dotenv.py:16: UserWarning: not reading .env - it doesn't exist.
warnings.warn("not reading %s - it doesn't exist." % dotenv)
You have requested to collect static files at the destination
location as specified in your settings.
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
在我输入“是”之后,它会挂起并超时而没有错误。当我追加--dry-run --noinput时会发生同样的事情。我的env.txt文件包含
AWS_ACCESS_KEY
AWS_SECRET_ACCESS_KEY
AWS_QUERYSTRING_AUTH = False
我很困惑,因为我的代码没有任何变化,而且我之前使用此应用程序成功运行了一个collectstatic。
App使用的是使用django-storage而不是S3-boto。这是我的设置:
if DEBUG:
#dev storage using local
...
else:
# Production AWS S3
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AVATAR_STORAGE_DIR = 'avatars/'
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
AWS_QUERYSTRING_AUTH = env('AWS_QUERYSTRING_AUTH', False)
AWS_PRELOAD_METADATA = True
STATIC_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = STATIC_URL
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
所有AWS凭据都在Heroku配置中设置。 FWIW我有
heroku labs:enable user-env-compile
启用
答案 0 :(得分:0)
将collectfast
添加到您的requirements.txt文件和settings.py(并检查installation docs)。这是一个救生员,特别是如果你有很多文件,因为它使用你的缓存设置来存储以前上传的文件的哈希值。将它添加到我的许多Django项目中已经大大改进了静态文件集合(在Heroku的情况下,实际上使其可行)。