青空の月

PHP, Unity, C#, アプリ開発関連について。

【GAE】 taskqueueからbackendsで動作させる

Google App Engineでバックグラウンドで処理をさせようとした時に色々迷ったのでメモ。

言語はPythonでtaskqueueを使用してバックグラウンドで処理させる。

 

まず、backends.yamlを用意する。

 backends.yaml

backends:
- name: backends_name
  class: B1
  instances: 1
  options: dynamic

呼び出し元

#!/usr/bin/env python

from google.appengine.api import taskqueue

taskqueue.add(url='/url_address', params={ 'name' :  "val" }, target='backends_name')

 

 taegetの値はbackends.yamlで定義したnameを指定する。

 taskqueue.addのパラメータにtargetをセットすることでbackendsで動作することを指定できる。

 

「.lab」が付いてると「target」パラメータなんてねえよって言われる。

from google.appengine.api.labs import taskqueue

なので「.lab」を取って使う。

from google.appengine.api import taskqueue

 

プログラムがbackendsで動作しているかは以下の様にすると判別出来るみたい。

from google.appengine.api import backends
target = backends.get_backend()
if target is None:
    logging.debug('frontend')
else :
    logging.debug('backends')

 

 

ちなみにbackendsで使うソースファイルは未だにGAE LauncherのDeployで更新されない(ver1.8.1)、なので以下の様なコマンドから更新しないといけない。Frontと共通のファイルでも別に更新する必要がある。

C:\Program Files (x86)\Google\google_appengine\appcfg.py backends プロジェクトパス update