[Twisted-Python] inlineCallbacks cascading cancelling and more
Sergey Magafurov
smagafurov at naumen.ru
Tue Aug 17 00:30:59 MDT 2010
Some mistake fixes in my previous message
> @inlineCallbacks
> def acquire_tts_for(self, call):
> tts_connection = yield self.tts.acquire_connection(timeout=10) #
> may raise TimeoutError inside
> yield call.make_audio_link_with(tts_connection, 'in', timeout=10)
> # may raise TimeoutError inside
> return tts_connection
>
> @inlineCallbacks
> def acquire_asr_for(self, call):
> asr_connection = yield self.asr.acquire_connection(timeout=10) #
> may raise TimeoutError inside
> yield call.make_audio_link_with(asr_connection, 'out', timeout=10)
> # may raise TimeoutError inside
> return asr_connection
Above code must be replaced with:
@inlineCallbacks
def acquire_tts_for(self, call):
# may raise TimeoutError inside
tts_connection = yield self.tts.acquire_connection(timeout=10)
try:
# may raise TimeoutError inside
yield call.make_audio_link_with(tts_connection, 'in', timeout=10)
except Exception:
# we MAY receive this Exception when cascading cancellation occurs
tts_connection.release()
raise
else:
return tts_connection
@inlineCallbacks
def acquire_asr_for(self, call):
# may raise TimeoutError inside
asr_connection = yield self.asr.acquire_connection(timeout=10)
try:
# may raise TimeoutError inside
yield call.make_audio_link_with(asr_connection, 'out', timeout=10)
except Exception:
# we MAY receive this Exception when cascading cancellation occurs
asr_connection.release()
raise
else:
return asr_connection
More information about the Twisted-Python
mailing list