Tôi đã sử dụng S3BotoStorage của s3boto làm tệp phụ trợ của tôi và đồng bộ hóa các tệp với các nhóm aws s3 của tôi (dàn dựng và sản xuất) bằng cách sử dụng ./manage.py collectstatic. Nó hoạt động tốt. Tuy nhiên nó rất chậm. Ngoài các tệp tĩnh của riêng tôi (chỉ một vài) và quản trị viên django, tôi có một vài gói bên thứ ba với nhiều tệp tĩnh (grappelli, django-redactor). Và tập hợp có thể mất tới 15 phút mỗi khi tôi chạy nó, tùy thuộc vào kết nối internet của tôi. Đối với những trường hợp tôi đang đồng bộ hóa với nhóm dàn dựng của mình và mọi thứ không hoàn toàn đúng, và tôi phải chỉnh sửa thứ gì đó và đồng bộ hóa lại, đó là một kẻ giết người lớn. Có bất kỳ lựa chọn thay thế tốt, nhanh, dễ đọc nào để đồng bộ hóa các tệp tĩnh với s3 không?Thay thế nhanh hơn cho manage.py collectstatic (phụ trợ lưu trữ w/s3boto) để đồng bộ hóa các tệp tĩnh với s3?
Trả lời
Tôi đã viết một ứng dụng Django có thể cắm được, dựa trên djangosnippet, lưu trữ ETag của tệp từ xa và so sánh kiểm tra chached thay vì thực hiện tra cứu mọi lúc. Nó đưa tôi từ khoảng 1m30s đến khoảng 10s mỗi cuộc gọi đến manage.py collectstatic
cho một vài trăm tệp tĩnh. Hãy khám phá tại đây: https://github.com/antonagestam/collectfast
Chỉ cần nhìn thấy điều này. Kiểm tra nó ra và đi từ 10-15 phút đến 2:45. Sẽ thiết lập một tiền thưởng cho bạn, vì đây sẽ là một sự tăng năng suất lớn. Cảm ơn bạn đã dành thời gian trả lời và tạo plugin thu thập! Tuyệt vời. –
Rất vui vì tôi có thể giúp bạn @BenRoberts! Cảm ơn những đóng góp. – antonagestam
với gunicorn, nó ném cho tôi một lỗi: [Errno 104] Thiết lập lại kết nối theo ngang hàng – avances123
Đặt AWS_PRELOAD_METADATA
thành True
trong cài đặt để nó tải trước tất cả các tệp trên s3 trước khi đồng bộ hóa và chỉ đồng bộ hóa các tệp chưa có (hoặc đã thay đổi).
Thật không may tôi thấy không có sự khác biệt đáng chú ý với cài đặt này được bật. –
chỉ tìm thấy một câu hỏi rất có liên quan: http://stackoverflow.com/questions/6618013/django-staticfiles-and-amazon-s3-how-to-detect-modified-files –