【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