Datastore에 외부에서 액세스하는 방법
방법은 2개 정도 있다고 생각합니다.
그 밖에도 접근은 있을 것 같습니다만. .
등.
Remote API 사용
Accessing App Engine with Remote API
표준 기능으로 Remote API가 있습니다.
gcloud sdk로 python sdk를 넣어? 그리고 remote_api_shell.py
에 패스가 다니고 있다고 생각합니다.
또한 GAE의 app.yaml에
app.yamlapplication: PROJECT_ID
version: 1
runtime: python27
api_version: 1
## ここを追加
builtins:
- remote_api: on
와 같이 builtins의 remote_api를 활성화합니다.
그 상태에서 deploy가 완료되면,
$ remote_api_shell.py PROJECT_ID
그렇다면 로컬 파이썬 환경에서 원격 datastore 등에 직접 닿을 수 있다고 생각합니다.
로컬 환경에서 google.appengine.ext.ndb
를 import할 수 있는 환경이라면 ndb의 모델도 import하여 AppEngine에서처럼 액세스할 수 있어 편리합니다.
from google.appengine.ext import ndb
class MyModel(ndb.Model):
number = ndb.IntegerProperty(default=42)
text = ndb.StringProperty()
# GAE上で取得するようにリモートのデータを取得できる。
models = MyModel.query().fetch()
그러나, 주의점으로서, 꽤 느립니다.
원인을 조사하려고 GAE 로그를 보면,
와 같이, /_ah/remote_api
앞으로 http요청이 발생하고 있습니다. 아마도 query 단위로 http 요청을 많이 하고 있기 때문에 오버헤드가 커져 처리가 무거운 것일까, 생각합니다.
Cloud Datastore API 사용
올해 출시된 Google Cloud Datastore API를 사용하면 성능 문제를 해결할 것입니다.
Google Cloud Datastore API 새로운 베타로 성능 향상
이 기사를 보면서하면 알기 쉽습니다.
Getting started with the Google Cloud Datastore API
gcloud 명령이 유효한 상황에서
$ pip install gcloud
그렇다면 gcloud-python을 설치할 수 있습니다.
gcloud의 auth가 유효하다면 파이썬 스크립트와 콘솔에서 datastore 관련 라이브러리를 import하여 사용할 수 있습니다.
from gcloud import datastore
client = datastore.Client(PROJECT_ID)
# こうするとqueryでiteratorが取得できる。
task = cli.query(kind='Task').fetch()
사용법은 튜토리얼이나 아래의 github 페이지를 확인하십시오.
gcloud-python
우선 remote api에 비해 성능이 좋습니다.
또한 datastore에 세션을 붙인 채인지, iterator도 지연 fetch에서 cursor가 거기에 올 때마다 통신하여 취득하고있는 것 같습니다.
따라서 Remote API와 같이 많은 정보를 얻으려고하면 굳어지거나 하는 일이 적습니다.
주의점
주의점으로서는 아직 beta판이므로 사양등은 여러가지 변경이 될 가능성이 있습니다.
또한 gcloud 인증이 통과하는 환경이어야 합니다.
게다가 ndb와 같은 ORMapper가 없기 때문에 약간 편집하기가 어렵고 GAE 코드에 영향을 줄 수 있습니다.
그렇다고는 해도, GCE 환경으로부터 액세스 할 때 등에는 편리가 좋기 때문에, 앞으로는 꼭 이쪽의 API를 사용해야 할 것입니다.
정식 릴리스에서는 ndb등을 사용할 수 있게 될지도 모릅니다.
Google Cloud Datastore RPC API 래퍼 라이브러리
Datastore RPC API의 파이썬 래퍼 라이브러리가 공식적으로 제공됩니다.
GoogleCloudPlatform/google-cloud-datastore :googledatastore
일단, RPC API의 업데이트에 추종해 멘테는 세세하게 되어 있는 것 같습니다.
단, authenticate credential가 필요하거나, interface가 조금 낡은 느낌이므로, 별로 추천은 할 수 없을 것 같습니다.
Task Queue
Push Queue등을 잘 사용하면 외부 트리거로 Datastore의 정보의 재기록 등은 할 수 있습니다.
다만, 미리 task를 준비해 두거나, task의 시간 제한등이 있으므로, 액세스 할 수 있다, 라고 하는 느낌은 아닙니다.
Reference
이 문제에 관하여(Datastore에 외부에서 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wasnot/items/c189630724c5f71c55fd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
application: PROJECT_ID
version: 1
runtime: python27
api_version: 1
## ここを追加
builtins:
- remote_api: on
$ remote_api_shell.py PROJECT_ID
from google.appengine.ext import ndb
class MyModel(ndb.Model):
number = ndb.IntegerProperty(default=42)
text = ndb.StringProperty()
# GAE上で取得するようにリモートのデータを取得できる。
models = MyModel.query().fetch()
올해 출시된 Google Cloud Datastore API를 사용하면 성능 문제를 해결할 것입니다.
Google Cloud Datastore API 새로운 베타로 성능 향상
이 기사를 보면서하면 알기 쉽습니다.
Getting started with the Google Cloud Datastore API
gcloud 명령이 유효한 상황에서
$ pip install gcloud
그렇다면 gcloud-python을 설치할 수 있습니다.
gcloud의 auth가 유효하다면 파이썬 스크립트와 콘솔에서 datastore 관련 라이브러리를 import하여 사용할 수 있습니다.
from gcloud import datastore
client = datastore.Client(PROJECT_ID)
# こうするとqueryでiteratorが取得できる。
task = cli.query(kind='Task').fetch()
사용법은 튜토리얼이나 아래의 github 페이지를 확인하십시오.
gcloud-python
우선 remote api에 비해 성능이 좋습니다.
또한 datastore에 세션을 붙인 채인지, iterator도 지연 fetch에서 cursor가 거기에 올 때마다 통신하여 취득하고있는 것 같습니다.
따라서 Remote API와 같이 많은 정보를 얻으려고하면 굳어지거나 하는 일이 적습니다.
주의점
주의점으로서는 아직 beta판이므로 사양등은 여러가지 변경이 될 가능성이 있습니다.
또한 gcloud 인증이 통과하는 환경이어야 합니다.
게다가 ndb와 같은 ORMapper가 없기 때문에 약간 편집하기가 어렵고 GAE 코드에 영향을 줄 수 있습니다.
그렇다고는 해도, GCE 환경으로부터 액세스 할 때 등에는 편리가 좋기 때문에, 앞으로는 꼭 이쪽의 API를 사용해야 할 것입니다.
정식 릴리스에서는 ndb등을 사용할 수 있게 될지도 모릅니다.
Google Cloud Datastore RPC API 래퍼 라이브러리
Datastore RPC API의 파이썬 래퍼 라이브러리가 공식적으로 제공됩니다.
GoogleCloudPlatform/google-cloud-datastore :googledatastore
일단, RPC API의 업데이트에 추종해 멘테는 세세하게 되어 있는 것 같습니다.
단, authenticate credential가 필요하거나, interface가 조금 낡은 느낌이므로, 별로 추천은 할 수 없을 것 같습니다.
Task Queue
Push Queue등을 잘 사용하면 외부 트리거로 Datastore의 정보의 재기록 등은 할 수 있습니다.
다만, 미리 task를 준비해 두거나, task의 시간 제한등이 있으므로, 액세스 할 수 있다, 라고 하는 느낌은 아닙니다.
Reference
이 문제에 관하여(Datastore에 외부에서 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wasnot/items/c189630724c5f71c55fd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Push Queue등을 잘 사용하면 외부 트리거로 Datastore의 정보의 재기록 등은 할 수 있습니다.
다만, 미리 task를 준비해 두거나, task의 시간 제한등이 있으므로, 액세스 할 수 있다, 라고 하는 느낌은 아닙니다.
Reference
이 문제에 관하여(Datastore에 외부에서 액세스하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wasnot/items/c189630724c5f71c55fd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)