2010-04-19 32 views
21

Tôi muốn tạo phiên bản ứng dụng GAE của khách hàng lưu trữ dữ liệu chính xác của phiên bản trực tuyến. (Myapp.appspot.com) Nếu tôi có thể sử dụng sdk thay thế, có bất kỳ thư viện hoặc công cụ nào để đồng bộ hóa phiên bản trực tuyến và sdk không? Tôi thử sử dụng trình tải hàng loạt nhưng tôi không thể tải dữ liệu đã tải xuống SDK cục bộ? Hãy giúp tôi.Làm thế nào để tạo bản sao cục bộ của kho dữ liệu GAE?

Trả lời

15

Xem the docs để biết chi tiết về cách tải xuống và tải lên toàn bộ kho dữ liệu của bạn. Chỉ cần tải xuống hàng loạt từ quá trình sản xuất, sau đó tải lên hàng loạt vào kho dữ liệu cục bộ của bạn.

Tuy nhiên, lưu ý rằng kho dữ liệu cục bộ không được thiết kế để xử lý khối lượng lớn dữ liệu - bạn có thể gặp sự cố về hiệu suất hoặc bộ nhớ.

+0

Cảm ơn Nick, nơi tôi có thể hiểu rõ hơn về cách tải lên hàng loạt dữ liệu cục bộ? Thực sự cần phải làm công việc này cho tôi. –

+1

Xem phần 'tải dữ liệu vào máy chủ phát triển' trên trang đó. Bạn chỉ cần chỉ định một đối số dòng lệnh bổ sung. –

+0

Dù sao, Nick .. Tôi đã cài đặt 1.3.3 sdk và trải qua một số lỗi của bulkload khoảng 6000 hồ sơ, dừng lại trên kỷ lục 145. Và ngoại lệ ném khi tôi muốn sử dụng kho dữ liệu xem trên giao diện điều khiển SDK địa phương. Chuyện gì vậy? –

28

Như đã giải thích trong this article (liên kết được cập nhật, nhờ Zied Hamdi)

Bạn chỉ cần kích hoạt các api từ xa

builtins: 
- remote_api: on 

Cập nhật ứng dụng của bạn sau đó chạy các lệnh sau:

appcfg.py download_data -A s~YOUR_APP_NAME --url=http://YOUR_APP_NAME.appspot.com/_ah/remote_api/ --filename=data.csv 
appcfg.py --url=http://localhost:8080/_ah/remote_api/ --filename=data.csv upload_data . 

Chỉnh sửa cho Sau ngày 12 tháng 4 năm 2016 trên SDK AppEngine mới nhất:

Các tác phẩm trên cho SDK phiên bản 1.9.0 trở về trước. Tuy nhiên với depreciation of ClientLogin, bên trên sẽ gây ra một lỗi của

03:13 PM Uploading data records. 
[INFO ] Logging to bulkloader-log-20160909.151355 
[INFO ] Throttling transfers: 
[INFO ] Bandwidth: 250000 bytes/second 
[INFO ] HTTP connections: 8/second 
[INFO ] Entities inserted/fetched/modified: 20/second 
[INFO ] Batch Size: 10 
[INFO ] Opening database: bulkloader-progress-20160909.151355.sql3 
2016-09-09 15:13:55,175 INFO client.py:578 Refreshing due to a 401 (attempt 1/2) 
2016-09-09 15:13:55,176 INFO client.py:804 Refreshing access_token 
2016-09-09 15:13:55,312 INFO client.py:578 Refreshing due to a 401 (attempt 2/2) 

Recommended by Anssi here, chúng ta có thể sử dụng máy chủ API trực tiếp mà không gặp phải lỗi này. Đối với một khởi động dev_appserver điển hình bạn sẽ có được kết quả như sau

INFO  2016-09-09 19:27:11,662 sdk_update_checker.py:229] Checking for updates to the SDK. 
INFO  2016-09-09 19:27:11,899 api_server.py:205] Starting API server at: http://localhost:52497 
INFO  2016-09-09 19:27:11,905 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 
INFO  2016-09-09 19:27:11,918 admin_server.py:116] Starting admin server at: http://localhost:8000 

thay vì ở trên để tải lên sử dụng cổng API, trong trường hợp này

appcfg.py --url=http://localhost:52497/_ah/remote_api/ --filename=data.csv upload_data . 
+5

Để làm điều này để làm việc cục bộ cho tôi, tôi cũng cần thêm -A dev ~ YOUR_APP_NAME vào tùy chọn upload_data. – ahanson

+1

Tôi gặp lỗi sau khi thực hiện bước upload_data: 'google.appengine.api.datastore_errors.BadRequestError: ứng dụng "dev ~ my_app_name" không thể truy cập dữ liệu của ứng dụng "my_app_name". Tôi đã giải quyết vấn đề này bằng cách xóa '.' ở cuối dòng. Vì vậy, tôi đã viết: appcfg.py --url = http: // localhost: 8080/_ah/remote_api/--filename = data.csv upload_data –

+1

Đây có phải là chỉ dành cho các ứng dụng python? – morpheus05

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