Python Google App Engine deferred.defer()在方法返回时失败

Python Google App Engine deferred.defer()在方法返回时失败,python,google-app-engine,exception,task,Python,Google App Engine,Exception,Task,我正在尝试使用google.appengine.ext.deferred运行任务。我正在将一个方法传递给defer()方法,该方法成功运行,但返回后,将抛出ValueError: File ".../admin.py", line 73, in post result = deferred.defer(meeple_tasks.buildGames()) File "/Applications/GoogleAppEngineLauncher.app/Contents/Re

我正在尝试使用google.appengine.ext.deferred运行任务。我正在将一个方法传递给defer()方法,该方法成功运行,但返回后,将抛出ValueError:

  File ".../admin.py", line 73, in post
    result = deferred.defer(meeple_tasks.buildGames())
      File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/deferred/deferred.py", line 198, in _curry_callable
        raise ValueError("obj must be callable")
    ValueError: obj must be callable
这里是我称之为延迟的地方:

result = deferred.defer(meeple_tasks.buildGames())   
buildGames()完成后将返回True。

您应该使用:

result = deferred.defer(meeple_tasks.buildGames)

如果您使用
buildGames()
,则会立即调用函数,并将返回值传递给
defer()
。通过删除括号,您可以将函数本身传递给defer。

您需要像这样调用您的deferred任务:


延迟。延迟(meeple_任务。构建游戏)

“obj必须可调用”表示(在您的情况下)值True不可调用。我是如何编写带有“defer”的延迟调用的buildGames方法调用到另一个进程(或任务)的,方法是将其插入队列并让AppEngine框架处理

请注意,您不能返回任何延迟任务。它们将运行在不同的进程上,可能运行在完全不同的服务器上。根据文件,他们是背景工人