말하자면, gen.engine으로 래핑 된 함수가있어 콜백 체인을 "곧바로"즉 코드가 동기식으로 보이게합니다./linear/뭐든간에.다른 함수로 tornado.gen.engine-wrapped 함수를 래핑하기
기능은, 다음 등이
@gen.engine
def func():
...
yield gen.Task(...)
...
yield gen.Task(...)
과 같습니다. 나는 분명히 gen.Task
에 의해 싸여있는 함수에서 발생하는 예외를 잡기 위해 yield
주위에 try/except를 사용할 수 있음을 이해합니다. 함수 func
을 다른 함수로 랩핑해야한다면 (실제로 사용 사례입니다) func
에있는 "잡히지 않는"예외를 잡아 내지 않으면 안됩니다. func
?
나는이 함께 왔어요 :
@gen.engine
def func(..., callback):
...
callback()
@gen.engine
def outer():
try:
yield gen.Task(func)
except Exception as e:
# Log the exception
# Stop ioloop (or something)
이것은 func
일반성의 비트를 추가하지만 추가 인수 및 func
에서 일부 인공 논리를 소개합니다.
다른 방법이 있습니까? "긴급 예외가 잡히는"것은이 질문의 목적을위한 인공적인 사용 사례 (이것은 다른 방법으로 가능할 수 있음)입니다. 내가 뭘 찾고있는 것은 tornado.gen을 호출하는 올바른 방법입니다. 다른 기능에서 엔진 랩 기능.
편집 : 어리석은 저, 나는 토네이도 2.x에 제한되었다고 언급 했어야했습니다!
weeeell, 네, 답해 주셔서 감사합니다.하지만 불행히도 저는 토네이도 2.x로 제한된다는 것을 잊었습니다. 그렇지 않으면, 나는 기쁘다, 토네이도에서 더 적은 농구를 뛰어 넘어야한다. 3. 그럼에도 불구하고 당신의 노력에 감사한다. – shylent
@shylent. 나는 나의 대답을 업데이트했다. – Nykakin
바로 감사합니다. 기본적으로, 나는 내 질문에 제시 한 접근법 만이 유일한 것이고, 이는 알아두면 좋다는 것을 확인시켜 준다. – shylent