2016-03-25 1 views
0

Я пытаюсь изучить торнадо coroutines, но у меня ошибка при использовании кода ниже. Я искал долгое время в сети. Но бесполезно. Пожалуйста, помогите или попытайтесь дать некоторые идеи, как достичь этого.Tornado raise gen.Return Return None

ошибка:

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

код:

from tornado import gen 

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


class EventAPIHandler(BaseHandler): 
    @gen.coroutine 
    def post(self): 
     try: 
      re = yield self.args_kwargs("event") 
      if re: 
       self.write(re) 
       self.finish() 
     except Exception,e: 
      print e 

ответ

0

Рассмотрим, что произойдет, если self.get_argument("data",None) возвращается None. Затем kwargs - None, поэтому args_kwargs не выполняет raise gen.Return(kwargs).

Поэтому, поскольку args_kwargs не поднимает gen.Return или исключение, он возвращает None. Затем re - None.

0

gen.Return является исключением, поэтому он попадает под одеяло except Exception, e:. Вам необходимо либо ограничить пункт except, либо специальный случай gen.Return:

except gen.Return: 
    raise 
except Exception as e: 
    print(e) 

 Смежные вопросы

  • Нет связанных вопросов^_^