Хороший вопрос, и я не уверен, что смогу полностью на него ответить. Вот несколько идей.
Sybase.py использует ведение журнала. Убедитесь, что вы используете его. Чтобы «подтолкнуть» выход из системы, я бы сделал это:
import logging
logging.basicConfig(level = logging.INFO,
format = "%(asctime)s %(levelname)s [%(filename)s] (%(name)s) %(message)s",
datefmt = "%H:%M:%S", stream = sys.stdout)
log = logging.getLogger('sybase')
log.setLevel(logging.DEBUG)
И, очевидно (почему это выше моего понимания??), чтобы заставить это работать в Sybase.py, вам нужно установить глобальный DEBUG=True
(см. строку 38)
Но затем, если мы посмотрим на def execute
, мы увидим (как вы указываете), что он блокирует. Мы ответим на ваш вопрос. Вы ничего не получите обратно, так как это блокирует это. Так как же это исправить - написать неблокирующий метод excute ;) Несколько советов есть в examples/timeout.py. Видимо, кто-то еще столкнулся с этим, но на самом деле не исправил.
Я знаю, что это, вероятно, не помогло, но я потратил 15 минут на поиски - я должен хотя бы рассказать вам, что я нашел.. Вы могли бы подумать, что execute
даст вам немного result
-- Подождите, каково значение результата в строке 707 ??
while 1:
status, result = self._cmd.ct_results()
if status != CS_SUCCEED:
break
Если статус! = CS_SUCCEED (который, как я предполагаю, в вашем случае равен True), можете ли вы просто увидеть, чему равен «результат»? Интересно, они просто не смогли поднять результат в виде исключения?
person
rh0dium
schedule
09.11.2011