2011-10-21 15 views
11

Tôi gặp sự cố với ứng dụng của mình dựa trên RefineryCMS 1.0.8 được triển khai trên heroku.Hết giờ Heroku khi tải tệp lớn lên s3

Heroku có thời gian chờ yêu cầu là 30 giây. Khi tải lên tệp> 4MO thông qua quản trị viên RefineryCMS, đôi khi sẽ mất hơn 30 giây để thực hiện yêu cầu (chủ yếu là do thời gian cần thiết để tải tệp lên s3).

Trong trường hợp này, dyno sẽ bị "cố định" và không phản hồi trong khoảng 30 phút (mọi yêu cầu trong thời gian này kết thúc bằng thời gian chờ yêu cầu lỗi H12). Hành vi này là chính xác những gì mô tả Christos trong tin nhắn cuối cùng trong this discussion

Từ other discussion này và the heroku documentation : "Tải lên trực tiếp đến S3 là phương pháp ưa thích nếu bạn làm việc với tải lên tập tin lớn hơn 4MB Ý tưởng là. để bỏ qua hop vào dyno của bạn, tạo kết nối từ trình duyệt của người dùng cuối trực tiếp tới S3. "

Việc tải trực tiếp lên S3 phải là giải pháp nhưng có vẻ khó khăn để tôi triển khai đúng cách với RefineryCMS/Dragonfly/Fog. Tôi không chắc chắn nếu nó có thể mà không cần sửa đổi lớn trong các công cụ đề tài và tôi tự hỏi nếu có một thay thế.

Cảm ơn sự giúp đỡ của bạn

Trả lời

4

Không thực sự. Thời gian chờ Heroku là một thiết lập trong đá điều mà bạn cần phải làm việc xung quanh. Tải lên trực tiếp lên S3 là tùy chọn duy nhất, với một số loại xử lý hậu tải lên được yêu cầu.

Có các giải pháp ngoài đó như CarrierWaveDirect, nhưng tôi không biết việc sử dụng này dễ dàng như thế nào với Nhà máy lọc dầu.

+0

Nó không thực sự được đặt trong đá. Nếu bạn sử dụng giải pháp có sự kiện (ví dụ Eventlet), bạn có thể đặt thời gian chờ cao hơn (tôi chỉ đặt thời gian chờ là 60 giây và dành 48 giây để tải ảnh lên ứng dụng của tôi) và Heroku sẽ không quan tâm, bởi vì nó không chặn. –

-4

Bạn có thể thử thêm lân vào ứng dụng của mình.

config/unicorn.rb

worker_processes Integer (ENV [ "WEB_CONCURRENCY"] || 3)

thời gian chờ 180 # < < Unicorn Timeout sẽ cho phép một thời gian dài hơn upload.

preload_app true

before_fork do | server, worker |

https://devcenter.heroku.com/articles/rails-unicorn

+0

Điều này có ghi đè thời gian chờ của heroku không? – superluminary

+0

Khi sử dụng đường ray, điều này cho phép thời gian chờ 180 giây cho phép tải lên s3 của tôi hoàn tất - tôi nghĩ Heroku mặc định là những gì đã hết thời gian chờ được đặt trong kỳ lân. – BIT

+2

Bộ định tuyến Heroku không mặc định cho bất kỳ thứ gì được đặt trong cấu hình ứng dụng kỳ lân. –