Django的CollectStatic的并行文件复制。
django-collectfaster的Python项目详细描述
这个包用一个--faster参数扩展了django的collectstatic管理命令,该参数激活 并行文件复制。速度的提高对于像s3这样的远程存储后端特别有帮助。
快速启动
安装Django CollectFaster:
pip install django-collectfaster
在settings.py中配置已安装的应用程序,并确保collectfaster在django.contrib.staticfiles之前列出:
INSTALLED_APPS = ( ..., 'collectfaster', 'django.contrib.staticfiles', 'storages', ..., )
如果将s3与django-storages一起使用,则可能已经在settings.py:中配置了此功能
AWS_S3_HOST = 's3-eu-west-1.amazonaws.com' AWS_STORAGE_BUCKET_NAME = '<your_aws_bucket_name>'
在settings.py:
中设置静态和媒体文件的存储后端STATICFILES_STORAGE = 'collectfaster.backends.boto.S3StaticStorage' DEFAULT_FILE_STORAGE = 'collectfaster.backends.boto.S3MediaStorage' # STATICFILES_STORAGE = 'collectfaster.backends.boto3.S3Boto3StaticStorage' # DEFAULT_FILE_STORAGE = 'collectfaster.backends.boto3.S3Boto3MediaStorage'
您应该将S3上的静态和媒体文件分割到不同的文件夹中,并在settings.py:
中进行配置STATICFILES_LOCATION = 'static' MEDIAFILES_LOCATION = 'media'
至少在生产设置中设置STATIC_URL:
STATIC_URL = 'https://%s/%s/%s/' % (AWS_S3_HOST, AWS_STORAGE_BUCKET_NAME, STATICFILES_LOCATION)
用法
并行收集静态文件:
python manage.py collectstatic --faster
将工人数量设置为30:
python manage.py collectstatic --faster --workers=30
使用multiprocessing而不是gevent:
python manage.py collectstatic --faster --use-multiprocessing
历史记录
0.1.2(2017-04-07)
- 添加对BOTO3和多处理的支持,而不是GEvent
- 将后端移动到子模块(请更改设置变量staticfiles_storage和default_file_storage)
0.1.1(2016-08-08)
- 而不是使用django storages而不是来自django storages redux的不推荐使用的fork。
0.1.0(2016-05-19)
- pypi上的第一个版本。