2012-05-22 33 views
5

Gần đây, tôi gặp phải hai sự cố khi tải tệp lên ứng dụng Java gae của mình. Tôi đang sử dụng tecnique được mô tả trong các blobstore doc.503 và 400 khi tải lên hình ảnh trong Google App Engine

  1. Với các tệp thông thường, đôi khi (giả sử 15% số lần) khách hàng nhận được "503 dịch vụ không khả dụng".
  2. Với hình ảnh có độ phân giải cao (ví dụ 7000x10000), khách hàng luôn nhận được "Yêu cầu không hợp lệ 400".

Trên cả hai trường hợp trên máy chủ không có thông báo lỗi được ghi lại, các đốm màu được viết chính xác, nhưng url successPath (gọi lại là createUploadUrl) không bao giờ được gọi. Dường như điểm cuối GAE xử lý sự cố tải lên vì một số lý do.

Khách hàng của tôi là một XMLHttpRequest js, bọc trong GWT:

public native void uploadWithXMLHttpRequest(UploadForm uploadForm) /*-{ 
    var fd = new FormData(); 
    var files = [email protected]::getFiles()(); 
    for (var i = 0; i < files.length; i++) { 
     fd.append("uploadFile"+i, files[i]); 
    } 
    var xhr = new XMLHttpRequest(); 
    //xhr.upload.addEventListeners... omitted 
    xhr.open("POST", [email protected]::getUploadUrl()()); 
    xhr.send(fd); 
} 

Bất kỳ ý tưởng cho nguyên nhân và giải pháp/cách giải quyết? Thx.

+0

Hiển thị cho chúng tôi một số mã! Đặc biệt là kể từ khi bạn đang sử dụng javascript để gửi tải lên của bạn. –

+0

Gửi cho tôi id ứng dụng của bạn và một phím blob của blob mà bạn cho rằng đã được tải lên chính xác nhưng URL thành công của bạn không được gọi. –

+0

Id ứng dụng: maptoapp. 400 chìa khóa blob (400 phản ứng xảy ra khi tải lên độ phân giải cao hình ảnh): AMIfv96gQvVD3xPl8IAUBZHwESNBAeeyZbxYWJD2BaxI688GkwNJXR6Lg7yx7pX8efb16YskBE7ZUVGYuUkXwSSXJ3uko6OnGKO79EuC-LupVC_gG2CaajOMBhJcQctXzsjI_MPu16ZdorDkGp-uK7c4o6BYqHxlXw 503 chìa khóa blob (503 phản ứng xảy ra loại một cách ngẫu nhiên.với cùng pic thường hoạt động chính xác): AMIfv957XZKBtl5C9RB19nntlrUi4bGfY8EPE8Rfidik0dlD5jPmeGgcLyqc2ye9WICIy063ZMoZRGIQkbVpCTM4EL7dUFzazWz2Irsn14iLKx2uBrJyYhl0qsrvRWxVa_KpMS6BGiH0N1c66XGPlkqoCo9jXPcBsg Tôi đã tải lên cả hai tập tin ngay bây giờ. – bebo

Trả lời

0

Lý do có thể:

1 Bạn tải lên tệp lớn (> 1MB) và viết tất cả. Bạn nên viết nó là portinal: 1 write = 1MB.

2 Yêu cầu của bạn mất hơn 30 giây - sử dụng chương trình phụ trợ.

0

Trong trường hợp này, 503 là do lỗi khi chúng tôi ghi thông tin tải lên vào kho dữ liệu của bạn. Vì bạn đang sử dụng kho dữ liệu M/S nên các lỗi tạm thời được mong đợi theo thời gian. Tôi đề nghị bạn chuyển đổi ứng dụng của bạn thành HRD để giảm thiểu khả năng xảy ra lỗi liên quan đến việc ghi thông tin tải lên vào kho dữ liệu của bạn.

Đã xảy ra lỗi 400 do ứng dụng của bạn tạo ra & nằm trong nhật ký ứng dụng của bạn.

+0

Ồ, tôi không nhận thấy nhật ký 400, xin lỗi. Sau khi điều tra thêm, có vẻ như lý do của nó là một IllegalArgumentException từ ImagesServiceFactory.getImagesService(). GetServingUrl(), khi tham số là một khóa blob hợp lệ của một hình ảnh có độ phân giải cao. Thật không may bây giờ TẤT CẢ các tải lên tạo ra một 503, vì vậy tôi không thể kiểm tra nó và ứng dụng của tôi là bị chặn một cách pratically, rất bực bội. – bebo

+0

get_serving_url chỉ hoạt động với hình ảnh <50 megapixel. Nếu hình ảnh của bạn lớn hơn, bạn cần phải giảm kích thước chúng trước khi gọi get_serving_url. –

+0

Tôi không thấy ở tất cả ràng buộc này trong tài liệu. Nó được viết ở đâu đó? – bebo

1

Vấn đề này đang được thảo luận trong vé GAE do người dùng khác có cùng sự cố: https://code.google.com/p/googleappengine/issues/detail?id=7619 (btw, hệ thống theo dõi lỗi có tính năng "bắt đầu", cho phép bạn bỏ phiếu và nhận thông báo)

+0

Vé được liên kết tại đây được khắc phục. Ứng dụng của tôi gặp vấn đề tương tự (nhưng sử dụng kho dữ liệu HRD), không còn vấn đề này nữa. – user431640

0

cố gắng sử dụng Google Cloud Storage, kể từ khi dịch vụ lưu trữ blob có rất nhiều vấn đề, vì vậy google đang cố gắng để di chuyển mục đích sử dụng từ Blob để hỗ trợ GCS

tôi đoán độ phân giải hình ảnh không thể vượt quá 8000 trong công cụ ứng dụng blob cửa hàng đó là lý do nó gây ra.

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