Подтвердить что ты не робот

Получить текущее значение списка env.hosts с помощью библиотеки Fabric Fabric

У меня есть этот код (foo и bar - локальные серверы):

env.hosts = ['foo', 'bar']

def mytask():
    print(env.hosts[0])

Что, конечно, печатает foo на каждой итерации.

Как вы, вероятно, знаете, Fabric выполняет итерацию через список env.hosts и выполняет mytask() для каждого из них следующим образом:

fab mytask

делает

task выполняется на foo
task выполняется на bar

Я ищу способ получить текущий хост на каждой итерации.

Спасибо,

4b9b3361

Ответ 1

Используйте env.host_string. Вы можете найти полный список env переменных здесь.

Ответ 2

Вы можете просто сделать:

env.hosts = ['foo', 'bar']

def mytask():
     print(env.host)

Потому что, когда вы выполняете задачу, выполняемую fab, у вас будет установлен этот параметр var.

Ответ 3

Спасибо Марсело.

Если вы действительно хотите использовать env.host_string (например, для цели конкатенации), обязательно заходите в задачу. Его значение None снаружи.