2012-10-05 29 views
8

Công việc phụ trợ của tôi đang hoạt động trên cơ sở công việc cron (mỗi 4 giờ). Nhưng nó được chấm dứt bằng cách xử lý dữ liệu. Các màn hình đăng nhập máy chủ như sau:GAE: Quá trình bị chấm dứt vì phụ trợ mất quá nhiều thời gian để tắt công việc phụ trợ

500 15377121ms 0kb instance=0 AppEngine-Google; (+http://code.google.com/appengine) 
E 2012-10-05 01:50:18.044 Process terminated because the backend took too long to shutdown. 

Làm thế nào để xử lý các loại lỗi trong chương trình của tôi

Trả lời

5

lỗi đó được tạo ra khi App Engine cần phải đóng backend của bạn xuống nhưng backend không thoát khỏi trong vòng 30 giây . Một số lý do tại sao điều này có thể xảy ra được liệt kê here. Tùy thuộc vào loại lỗi, App Engine có thể gửi chương trình phụ trợ của bạn thông báo về việc tắt máy sắp xảy ra, vì vậy, bạn nên thu thập thêm register a shutdown handler để có thể thu thập thêm dữ liệu về trạng thái của ứng dụng khi điều này sắp xảy ra.

Nếu bạn thấy điều này thường xuyên, có thể có một lời giải thích có hệ thống, chẳng hạn như bộ nhớ công việc của bạn vượt quá mức tối đa cho lớp của chương trình phụ trợ.

+0

Thêm trình xử lý tiện ích không hỗ trợ trong ứng dụng của tôi. Tôi đang sử dụng webapp python2.7 với một chương trình phụ trợ. Appengine hiển thị thông báo này trong nhật ký 95% thời gian. Trình xử lý được gọi chỉ 2-4 lần so với tuần trước. Khi nó đã được gọi, backend đã làm việc để hoàn thành. Việc ghi nhật ký sử dụng bộ nhớ và bộ vi xử lý hiển thị tốt trong giới hạn. Trình xử lý tắt máy không được đảm bảo để được gọi từ cuộc trò chuyện trên google io trên các chương trình phụ trợ. –

0

Xử lý cùng một vấn đề. Nhìn vào các nguyên nhân được liệt kê trong tài liệu chính thức. Mức tiêu thụ bộ nhớ có vẻ ổn định so với số liệu thống kê. Các vấn đề tranh chấp Datastore cũng được xử lý trong mã của tôi. Hết thời gian chờ. Thay đổi cơ chế nhiệm vụ để làm việc trong các khối có thể phục hồi dường như là cách duy nhất.

Sau khi truy tìm lỗi này đôi khi, có vẻ như mô hình phát triển AppEngine xoay quanh các trình xử lý url có giới hạn về thời gian, bộ nhớ, v.v. Tôi redid nhiệm vụ dài hạn của tôi được thực hiện nhiệm vụ nhỏ. Hàng đợi công việc đã kích hoạt các tác vụ nhỏ hơn chạy trong khi hàng đợi kết thúc nhiệm vụ tiếp theo. Không bao giờ thất bại ngay cả một lần!

Lợi thế là taskqueuus có tính năng chuyển đổi không an toàn/chuyển giao tốt hơn so với chỉ một công việc cron lớn. Một nhiệm vụ thất bại không có nghĩa là phần còn lại của danh sách nhiệm vụ lớn thất bại.

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