2011년 1월 25일 화요일

remote_shell_spi 사용

GAE에서 기본적으로 data manage panel이 제공이 되지만,

아무래도 대량으로 데이터를 올리고 지우고 하는데는 문제가 있다.

그래서 찾아보니깐, 대량으로 올리고 받는 부분에 있어서는 appcfg.py를 사용하는 방법이 있다.

형식은 excel->csv를 사용하는 쪽이 아무래도 편리하고,

데이터를 올리는 것은 좋았는데 데이터를 한꺼번에 지우는 법에서는 찾아봐야 했다.

방법은 remote_api_shell.py를 사용하는 것인데,

다른 사이트에서 참조하였다.

이것을 하기전에 app.yaml에서 remote_api 사용 가능하도록 수정해줘야한다.

handlers:
- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin

그 이후에, remote_shell_api의 사용 방법은
아래와 같이 command line을 띄우고,
remote_shell_api.py yourapp /remote_api

    from models import Entry
    query = Entry.all()
    entries =query.fetch(1000)
    db.delete(entries)

위와 같이 하면 데이터를 대량으로 한꺼번에 지울수가 있다.

2011년 1월 1일 토요일

구글앱엔진 channel API(2)

Channel API의 필수요소

Javascript Client - 자바스크립트 클라이언트는 다음 세가지의 역할을 합니다.

- 채널을 연결할때 서버로 부터 토큰을 받아옵니다.
- 채널에서 날라오는 데이터를 받습니다.
- 원격 클라이언트로 업데이트된 메세지를 보냅니다.

서버 -
- 각각의 자바스크립트 클라이언트와 독립적인 채널을 만듭니다.
- 각각의 자바스크립트 클라이언트에 고유의 토큰을 보냅니다.
- 클라이언트로부터 POST로 올라오는 메시지를 업데이트합니다.
- 업데이트된 메세지를 채널을 통해서 클라이언트들에게 뿌립니다.

클라이언트 ID
- 각각의 자바스크립트 클라이언트를 확인하기 위한 ID입니다.

토큰

채널

메세지

소켓

Google app engine channel (구글 앱엔진 채널)

구글에서 새로 업데이트한 앱엔진 내용중의 channel이다.

channel은 Google서버를 이용해서 persistent한 연결을 만들어준다.

또, 자바스크립트를 사용해서 polling 대신에 callback을 이용해서 시스템에 무리를 주지않고,

실시간으로 메세지를 전달할 수 있다,

협동시스템 collaborate application, multiplayer game, 채팅 등등에서 이용할 수가 있다.

---------> 이 내용은 overview에 있는 내용을 대략적으로 번역한 것인데

위 내용을 보면 polling 대신에 callback이라는 방식을 사용하는 군요,

polling은 시스템을 끊임없이 주기적으로 조사를 해서, 변경사항이 있나를 조사하는 것인데 ,

이 방식은 아무래도 끊임없이 조사를 하다보니깐, 리소스가 많이 들어가고요,

이것을 callback으로 구현을 했나봅니다.


은행의 예를 든다면, polling이라는 것은 번호표가 없고요, 주기적으로 창구에 가서

'제차례인가요' 하고 물어보는 것입니다. callback은 번호표를 받고 기다리고 있으면,

창구에서 'N 번 고객님 오세요' 하고 부르는 것이고요,

아무래도 callback이 resource가 적게 들겠죠, 상대방이 부르기전까지는 자기 할 일을 하고 있으면 되니깐.