2015-01-21 16 views
6

Sử dụng sóng mang cho người tải lên của chúng tôi, chúng tôi nhận được một vài lỗi Excon mỗi tuần từ ứng dụng sản xuất của chúng tôi. Ví dụ:Đường ray: Lỗi Carrierwave/Excon lẻ tẻ

Excon::Errors::BadRequest: Expected(200) <=> Actual(400 Bad Request) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>IncompleteBody</Code><Message>The request body terminated unexpectedly</Message> 

Chúng tôi đã bắt đầu gói quá trình tải lên trong một khối retry và nó luôn luôn dường như làm việc tốt sau khi một cố gắng, nhưng tôi tự hỏi nếu có một giải pháp tốt hơn, vì điều này trở nên khó sử dụng sau một lúc. Dường như với tôi như những lỗi này nên được xử lý ở mức thấp hơn. Có cách nào tốt hơn để xử lý các vấn đề này không?

Dưới đây là cấu hình sản xuất của chúng tôi:

config.storage = :fog 
config.root = Dir.tmpdir 
config.cache_dir = 'carrierwave' 
config.fog_credentials = { 
    provider: 'AWS', 
    aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
    aws_secret_access_key: ENV['AWS_ACCESS_KEY'], 
} 

config.fog_directory = ENV['AWS_S3_BUCKET'] 
config.fog_public = false 
config.fog_authenticated_url_expiration = 7.days.to_i 

config.enable_processing = true 

Và chúng tôi đang sử dụng phiên bản đá quý:

fog (1.27.0) 
carrierwave (0.10.0) 
excon (0.43.0) 
+0

Bạn đã cố khắc phục điều này chưa? – RuiMochila

+0

Sau khi chuyển sang 'carrierwave-aws', chúng tôi chưa thấy vấn đề này nữa. – lobati

Trả lời

3

Nó bắt đầu hoạt động trở lại sau khi tôi đã viết initializer của tôi như thế này, sau khi vượt qua một vài vấn đề, Tôi nghĩ rằng điểm cuối AWS đã thay đổi:

CarrierWave.configure do |config| 
    config.fog_credentials = { 
     :provider    => 'AWS', 
     :aws_access_key_id  => ENV['S3_KEY'], 
     :aws_secret_access_key => ENV['S3_SECRET'], 
     :endpoint    => "https://s3.amazonaws.com", 
     :region     => ENV['S3_REGION'] 
    } 
    config.fog_directory = ENV['S3_BUCKET'] 
end 

Ngoài ra, tôi nghĩ khu vực của mình là w là "us-west-2", nhìn vào bảng điều khiển quản trị AWS của tôi, nhưng nó chỉ bắt đầu hoạt động khi tôi đổi thành "eu-west-1".

Sau đó, tôi nhận ra rằng không phải là một ý tưởng tốt để xác định điểm cuối đó, trên thực tế tốt hơn là để nó trong tình huống này. Dù sao, thay đổi sang sóng mang sóng như được chỉ bởi lobati giải quyết được vấn đề.

+1

Bạn có thấy các lỗi nhất quán hay không liên tục? Đối với hầu hết các phần của chúng tôi làm việc, chúng tôi sẽ chỉ nhận được một lỗi một lần mỗi ngày hoặc hai. Chúng tôi đã kết thúc chuyển sang [carrierwave-aws gem] (https://github.com/sorentwo/carrierwave-aws) và chưa thấy bất kỳ lỗi nào cho đến thời điểm này. – lobati

+0

Cảm ơn bạn đã kính trọng tàu sân bay-aws Tôi sẽ kiểm tra nó. Tôi đã nhận được lỗi nhất quán trên một số hình ảnh, trong khi những người khác đang làm việc tốt. Tôi không hiểu điều gì đang xảy ra bởi vì tôi không thay đổi bất cứ thứ gì và nó ngừng hoạt động ... Tôi có hai dự án với cùng một thiết lập, một dự án đang hoạt động tuyệt vời, cái kia cho tôi lỗi như thế này, luôn luôn .. – RuiMochila

+0

Xin vui lòng bỏ qua trước đó. Cảm ơn bạn đã giới thiệu carrierwave-aws Tôi sẽ kiểm tra nó. Tôi đã nhận được lỗi nhất quán trên một số hình ảnh, trong khi những người khác đang làm việc tốt. Tôi không hiểu điều gì đang xảy ra bởi vì tôi không thay đổi gì và nó ngừng hoạt động ... Tôi có hai dự án với cùng một thiết lập, một dự án đang hoạt động rất tốt, cái kia cho tôi lỗi như thế này, luôn ... – RuiMochila

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