2016/01/31

[Google App Engine][Python]Backends(Modules)にtaskQueueの登録をする時の注意点

前回、Google App EngineのBackends(Modules)にtaskQueueの登録をする方法を書きましたが、これ実は、dispatchを設定している場合でもtargetパラメータが優先されてしまうので、注意が必要というとこと。

具体的には、

dispatch:
  - url: "*/hoge/*"
    module: hoge
とdispatch.yamlの設定を行い、hoge.yamlで下のようなURLのルーティングを行う。
handlers:
- url: /hoge
  script: foo.app
foo.pyで
import webapp2
from google.appengine.api import taskqueue

class FooHandler(webapp2.RequestHandler):
    def post(self):
      pass
    def get(self):
      taskqueue.add(
        url='/hoge', 
        params={}
      )
 
app = webapp2.WSGIApplication([
  ('/hoge',FooHandler)
],debug=True)
と書いた場合、displatchによりhoge.yamlが働きfoo.appの処理が働きそうだが、これは、エラーになってしまう。

何故ならば、targetの設定を行っていないので、defaultモジュール、つまり、app.yamlでURL解決を図ろうとして、404を起こしてしまう。

なので、targetを設定して、moduleをきちんと作成することが大事です。

0 コメント:

コメントを投稿