2012-03-06 32 views
11

Tôi đang cố gắng cho phép tải lên lớn khi chạy Unicorn trên Heroku với Rails nhưng tôi đã nhận ra rằng mọi video tải lên lớn có thể mất nhiều thời gian hơn thời gian chờ cho nhân viên Unicorn. Điều này sẽ có nghĩa là (tôi đã nhìn thấy điều này xảy ra) rằng quá trình tổng thể Unicorn sẽ giết người lao động tải lên các tập tin lớn và yêu cầu sẽ hết thời gian (với một lỗi 503).Unicorn + Rails + Tải lên lớn

Không xóa hoặc tăng tốc độ hết thời gian chờ cho máy chủ của tôi là có cách nào để cho phép nhân viên tải lên bị treo trong khi quá trình tải lên hoàn tất không? Hoặc, tôi có hoàn toàn hiểu nhầm và có khả năng điều gì đó khác đang khiến video tải lên của tôi hết thời gian chờ không?

Trả lời

7

Nếu bạn đang tải lên S3, bạn có thể "đơn giản" để người dùng tải tệp trực tiếp lên S3 thay vì qua dynos của bạn và nhận được ping khi quá trình tải lên hoàn tất.

Để biết thêm thông tin đáng kể hơn thế này, hãy kiểm tra cái gì đó như CarrierWaveDirect

+0

Tôi đang sử dụng CarrierWaveDirect, nhưng tôi vẫn phải tăng thời gian chờ của những người lao động kỳ lân, bởi vì họ sẽ gặp sự cố nếu quá trình tải tệp lên quá lâu, ngay cả khi bạn đang sử dụng CarrierWaveDirect. – cantonic

8

Nếu bạn đang sử dụng nginx như một reverse proxy trước kỳ lân, bạn có thể sử dụng Upload Module. Khi được định cấu hình, nginx xử lý việc tải lên và lưu trữ nó trong thư mục/tmp, sau đó con kỳ lân của bạn nhận được thông số yêu cầu cho biết tài sản được tải lên ở đâu và đó là loại nội dung. Không có nhiều nhân viên bị ràng buộc khi nhận được tải lên.

Nếu bạn không thực sự muốn tải lên trên cùng một máy chủ với dịch vụ web của bạn, nhưng lưu trữ nó trong S3, bạn nên làm theo gợi ý của @Neil Middleton và thiết lập mọi thứ để tải lên trực tiếp tại đó.

Các vấn đề liên quan