Google App Engine用フレームワークKayでTaskQueueを簡単に扱う

Kay でも deferred を使おう – Kays daddy」に、Kayでdeferredを使う方法が紹介されていました。

Google App Engine用フレームワークKayでは、deferredを使うことで、TaskQueueを簡単に扱うことができます。

まず初期設定ですが、元の記事ではapp.yamlとurls.pyを編集するように書かれていました。
現在のKayでは、app.yamlもurls.pyも初期状態でdeferredの設定が行われており、追加する必要はありませんでした。

deferredを使うには、deferred.defer()で関数と引数を指定します。

myapp/views.py

from google.appengine.ext import deferred
def do_something_later(foo):
    #バックグラウンドで行う処理
    import logging
    logging.debug(keys)
    …

def index(request):
    #バックグラウンドで行う処理を登録する
    deferred.defer(do_something_later, 'foo')
    …

deferは次のように定義されています。

def defer(obj, *args, **kwargs):

objは実行可能なオブジェクト、argsとkwargsはobjの引数に使用されます。

引数の「_countdown」「_eta」「_name」「_transactional」「_url」「_queue」は、
google.appengine.api.labs.taskqueue.Taskクラスの引数になります。
(参照:The Task Class – Google App Engine – Google Code)

def index(request):
    deferred.defer(do_something_later, 20, _queue="foo", _countdown=60)

コメント

  1. Pingback: Google App EngineでRSSをツイートするbotをつくるまで – Yuyak

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください