python - tonado raise gen.Return 错误
PHP中文网
PHP中文网 2017-04-17 17:30:03
0
2
290

最近在使用 Tornado,用到 gen.coroutine 和 yield 配合,但是出了些问题,一直不明白!

代码:

class BaseHandler(tornado.web.RequestHandler):
    @gen.coroutine
    def args_kwargs(self,pro):
        try:
            kwargs = self.get_argument("data",None)
            if kwargs:
                code="-10000"
                raise gen.Return(code)
        except:
            print traceback.format_exc()

class EventAPIHandler(BaseHandler):
    @gen.coroutine
    def post(self):
        try:
            code = yield self.args_kwargs("event")
            if code:
                self.write(re_code[code])
                self.finish()
        except Exception,e:
            print traceback.format_exc()

错误为:

Traceback (most recent call last):
  File "server.py", line 124, in args_kwargs
    raise gen.Return(code)
Return

不能返回数据,请问有大神知道原因吗?请指教,非常感谢!

PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
伊谢尔伦

元の try 以外を削除してください。try 以外はレイズをキャッチします。次のように変更してください。問題ありません。

リーリー
いいねを押す +0
阿神

Python2.x では、ジェネレーターは直接 return 值 できないため、Tornado は値を特別な例外にラップして返します。この例外は gen.Return であるため、try..Except はこの例外をキャッチし、エラーが発生します。報告されているので、BaseHandler.args_kwargs のコードを変更します。
には、yield はないようです。args_kwargs を使用する必要はありません。 > そうですよね? gen.coroutine リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!