django-collectfaster

Parallel file copying for Django's collectstatic.

BSD-3-CLAUSE License

Downloads
391
Stars
18
Committers
2

====================
django-collectfaster

|pypi| |status|

.. |pypi| image:: https://badge.fury.io/py/django-collectfaster.png :target: https://badge.fury.io/py/django-collectfaster :alt: Latest Version

.. |status| image:: https://img.shields.io/pypi/dm/django-collectfaster.svg :target: https://pypi.python.org/pypi/django-collectfaster :alt: Downloads

This package extends Django's collectstatic management command with a --faster argument that activates the parallel file copying. The speed improvement is especially helpful for remote storage backends like S3.

Quickstart

Install django-collectfaster::

pip install django-collectfaster

Configure installed apps in your settings.py and make sure collectfaster is listed before django.contrib.staticfiles::

INSTALLED_APPS = (
    ...,
    'collectfaster',
    'django.contrib.staticfiles',
    'storages',
    ...,
)

If you are using S3 with django-storages you probably already have this configured in your settings.py::

AWS_S3_HOST = 's3-eu-west-1.amazonaws.com'
AWS_STORAGE_BUCKET_NAME = '<your_aws_bucket_name>'

Set the storage backends for your static and media files in the 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'

You should split your static and media files on your S3 in different folders and configure it in the settings.py::

STATICFILES_LOCATION = 'static'
MEDIAFILES_LOCATION = 'media'

Set the STATIC_URL at least on your production settings::

STATIC_URL = 'https://%s/%s/%s/' % (AWS_S3_HOST, AWS_STORAGE_BUCKET_NAME, STATICFILES_LOCATION)

Usage

Collect your static files parallel::

python manage.py collectstatic --faster

Set the amount of workers to 30::

python manage.py collectstatic --faster --workers=30

Spawn workers using multiprocessing instead of gevent::

python manage.py collectstatic --faster --use-multiprocessing

Credits

Tools used in rendering this package:

  • Cookiecutter_
  • cookiecutter-djangopackage_

.. _Cookiecutter: https://github.com/audreyr/cookiecutter .. _cookiecutter-djangopackage: https://github.com/pydanny/cookiecutter-djangopackage

Package Rankings
Top 12.56% on Pypi.org
Related Projects