与Django应用程序的Heroku Collectstatic超时

时间:2014-02-15 15:02:22

标签: django heroku amazon-s3 static-files

出现意外问题,我最近尝试在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 

启用

1 个答案:

答案 0 :(得分:0)

collectfast添加到您的requirements.txt文件和settings.py(并检查installation docs)。这是一个救生员,特别是如果你有很多文件,因为它使用你的缓存设置来存储以前上传的文件的哈希值。将它添加到我的许多Django项目中已经大大改进了静态文件集合(在Heroku的情况下,实际上使其可行)。