GAE/Pのdeferred libraryを使って非同期に処理を実施する方法

Google App Engineには「Task Queue API」ってのがありますが、結構設定が面倒です。その煩雑さを解決するために、簡単にタスクのQueueを使える「deferred library」というものが用意されています(Document: Background work with the deferred library - Google App Engine - Google Code)。

例) deferred libraryを使用

--- app.yaml --- 以下を追加

builtins:
  deferred: on
--- deferred_test.py ---

import logging
from google.appengine.ext import deferred
def do_hoge(msg):
    logging.info("DO HOGE")
    logging.info(msg)

def queue_task():
    deferred.defer(do_hoge, "MESSAGE")
--- main.py ---

class DeferredTest(webapp.RequestHandler):
    def get(self):
        import deferred_test
        deferred_test.queue_task()
        self.response.out.write("QUEUE")

ただ、python2.7だと落ちてしましました。

AttributeError: ‘FakeConnection' object has no attribute 'shutdown'

(参考: python - Google App Engine Task Queues - nasty failure - Stack Overflow

この記事が役に立った場合、シェアしていただけると励みになります!!