Если у вас нет других подсказок о том, что идет не так (например, ваши юнит-тесты указывают на конкретные случаи, которые вызывают это, или если ответ pyfunc не дает понять, почему это происходит), тогда включите отложенную отладкучтобы получить информацию о том, где указывается первый (и только разрешенный) результат Отложенного:
from twisted.internet import defer
defer.setDebugging(True)
Или
twistd --debug [...]
Или
trial --debug [...]
ВыВы получите дополнительные трассировки стека с отчетами об ошибках, подобных тому, с которым вы столкнулись.Дополнительные трассировки стека сообщат вам, где был создан рассматриваемый Отложенный и где он был впервые вызван (если к нему были вызваны .callback () или .errback ()).
Поскольку вы используете inlineCallbacks
вы не получите хорошую трассировку стека о том, где происходит настоящая ошибка, но информация о том, где Отложенный запускается впервые, может дать вам подсказку о том, откуда может последовать активация.
К сожалению,Добавленная неизвестность - это просто стоимость использования inlineCallbacks
на данный момент.Это, вероятно, преодолимо, но кто-то должен взять на себя эту задачу.