我相對較新的龍捲風,我試圖停止執行方法,如果條件通過,否則它應該繼續下一行代碼(類似於返回)Python龍捲風停止執行完成()
這是我的代碼,我在哪裏卡住了,
class PostMatchHandler(BaseRequestHandler):
result1 = "some sql query".execute()
if not result1:
response.update({'info': 'Levels Completed', 'status': settings.STATUS_200})
self.write(response)
self.finish()
else:
result1 = result1[0]
do_something()
self.write(response)
BaseRequestHandler是部分:
class BaseRequestHandler(tornado.web.RequestHandler):
"""
Base Class for all the future classes
Activities like logging should be done in this class.
Allow cors request in this class
"""
def set_default_headers(self):
print "setting headers!!!"
def write_error(self, status_code, **kwargs):
response = {}
handle_error_messages..
self.write(response)
@staticmethod
def extract_psycopg2_integrity_error(error):
return error.message.split("Key")[1].replace("(", "").replace(")", "").split(".")[0].replace("=", " ")
def prepare(self):
logging.debug(
"[info] Class {} via {} with body {}".format(self.__class__.__name__, self.request.uri, self.request.body))
所以,在這裏,如果RESULT1是空的,那麼它應該完成的API的執行和RET甕。但我得到這個錯誤RuntimeError: Cannot write() after finish()
我該如何停止執行。
一旦你調用finish(),請求處理就完成了,它的資源(如網絡連接)就被釋放了。因此,如果在'finish'之後調用任何'write'方法,它就無處可寫數據 - 這就是爲什麼會引發'RuntimeError'的原因。請注意,'finish()'結束了請求,而不是協程,完成一個協程,你需要使用'return'(沒有任何Python 2的參數)或'raise gen.Return(None)'。 – Nikita