2016年5月29日日曜日

GAE/P Django タスクキューの 403エラー対策

GAE/Pのタスクキューは、通常、このように使います。

1.メインのプログラムで、キューに入れる

 [views.py]
 def hoge(request):
  …
  taskqueue.add(url='/task', params={'key': 'var'})
  …

2.Task Queue Service が /task に HTTPリクエストを送る

3.URLディスパッチで、タスクを起動

 [urls.py]
 url(r'^task$', views.task),

4.タスク処理を実行

 [views.py]
 def task(request):
  … あれこれ
  return HttpResponse()

でも、タスク処理が実行されず、しばし、悩みました。

開発サーバーのログを見てると、403エラーで弾かれてる??
ググッてみても、Adminでログインしろとか、トンチンカンな答えばかり..

結局は、CSRF絡みでした。
 http://docs.djangoproject.jp/en/latest/ref/contrib/csrf.html

django.middleware.csrf.CsrfViewMiddleware が有効になっている場合は、このように書きましょう。

5.タスク処理(改)

 [views.py]
 from django.views.decorators.csrf import csrf_exempt

 @csrf_exempt
 def task(request):
  … あれこれ
  return HttpResponse()

無事、解決。

0 件のコメント:

コメントを投稿