2011-02-07 15 views
3

私はgoogle.appengine.ext.deferredを使用してタスクを実行しようとしています。私は延期()メソッドにメソッドを渡していますし、そのメソッドが正常に実行されますが、返却時に、とValueErrorがスローされます。私は延期を呼ぶのはここGoogle App Engine deferred.defer()がメソッドを返すときに失敗する

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を返します。

答えて

10

あなたが使用する必要があります:あなたはbuildGames()を使用している場合

result = deferred.defer(meeple_tasks.buildGames) 

は、それはdefer()戻り値を渡し、そこ右クリック機能を呼び出します。かっこを削除することで、関数自体を渡して遅延させます。

deferred.defer(meeple_tasks.buildGames)

「objが呼び出し可能でなければならない」(あなたのケースで)真の値が呼び出し可能ではないことを意味します

2

あなたはこのようなあなたの延期タスクを呼び出す必要があります。どのようにして、キューに挿入してAppEngineフレームワークに処理させるかによって、buildGamesメソッド呼び出しを別のプロセス(またはタスク)に「遅延」させて、遅延呼び出しを書きました。

遅延タスクで何も返すことはできません。彼らは別のプロセスで実行され、まったく別のサーバーで実行されます。ドキュメントに従って、彼らはバックグラウンドワーカーです。

関連する問題