Ткань python не позволит мне передавать вывод меньше?

Я настраиваю ткань в первый раз, и у меня возникают проблемы с передачей вывода из ткани в меньшее. Например, если я запускаю:

fabric deploy |less

(Где deploy — это моя функция развертывания)

Я получаю следующую ошибку от ткани:

IOError: [Errno 22] Invalid argument

Это исходит от команды run() на удаленном хосте.

Если я добавлю pty=False к аргументам run(), это сработает. Однако это означает, что для каждой команды запуска мне нужно добавить этот аргумент. Не говоря уже о том, что я считаю, что это имеет значение с подсказками и вводом данных (очевидно, что для этих случаев я не буду использовать меньше).

Как я могу это исправить? Должен ли я просто делать tty=false для всего?


person dustin999    schedule 07.08.2011    source источник
comment
Попробуйте обновить, чтобы показать ваш фактический код.   -  person agf    schedule 09.08.2011


Ответы (1)


Просто для справки в будущем я решил эту проблему, применив патч к Operations.py, как показано здесь:

http://code.fabfile.org/attachments/56/operations.patch

В противном случае код, воспроизводящий эту проблему, выглядит следующим образом:

from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm
import re
import sys

def test():
    run('ls')

И проблема возникнет, если вы выполните следующую команду:

fab -H тест myhost | меньше

Надеюсь, это кому-нибудь поможет... Я до сих пор не понимаю, почему эта старая ошибка до сих пор не исправлена ​​в последней версии Fabric.

-Дастин

person dustin999    schedule 15.08.2011