Я разрабатываю асинхронный веб-сервис с Twisted Klein. Часть кода следующим образом:Как избежать команды yield в python выдает исключения каждый раз?
@inlineCallbacks
def test(input1):
try:
result = yield function(input1)
print result
returnValue(result)
except:
returnValue("None")
pass
У меня есть эта функция test
как часть моего веб-сервиса, каждый раз, когда я назвал test
функцию из другой функции в возвращений «None». Однако на экране сервера он выводит правильный результат, который я хочу (строка print result
в попытке правильно выполнена, только returnValue(result)
не используется). Я не очень хорошо разбираюсь в асинхронном кодировании, но есть ли что-нибудь, что я должен быть осторожным в попытке, кроме как вместе с выходом? Благодарю.
Почему вы используете голую 'except'? Вы должны поймать конкретный тип исключения, которого вы ожидаете. Я мало что знаю о Twisted Klein, но быстрый поиск в Google говорит, что они [используют исключения для моделирования сопрограмм] (http://tavendo.com/blog/post/going-asynchronous-from-flask-to-twisted -klein /), поэтому голый 'except' будет сильно закручиваться. – user2357112
Поэтому я изменяю это из флеш-кода, и я вызываю api, который может отбросить исключение, я не хочу, чтобы он разбился, поэтому я использую try/except, чтобы сделать это. Может быть, я должен удалить этот голый, кроме того, и посмотреть, как он работает? – JLTChiu
Это действительно сработало после того, как я удалил голый, кроме. Наверное, мне нужно указать все возможные исключения из api. Я хочу называть вас правильным ответом, но вы в комментарии – JLTChiu