Ответ 1
Используйте env.host_string
. Вы можете найти полный список env
переменных здесь.
У меня есть этот код (foo
и bar
- локальные серверы):
env.hosts = ['foo', 'bar']
def mytask():
print(env.hosts[0])
Что, конечно, печатает foo на каждой итерации.
Как вы, вероятно, знаете, Fabric выполняет итерацию через список env.hosts и выполняет mytask() для каждого из них следующим образом:
fab mytask
делает
task
выполняется на foo
task
выполняется на bar
Я ищу способ получить текущий хост на каждой итерации.
Спасибо,
Используйте env.host_string
. Вы можете найти полный список env
переменных здесь.
Вы можете просто сделать:
env.hosts = ['foo', 'bar']
def mytask():
print(env.host)
Потому что, когда вы выполняете задачу, выполняемую fab, у вас будет установлен этот параметр var.
Спасибо Марсело.
Если вы действительно хотите использовать env.host_string
(например, для цели конкатенации), обязательно заходите в задачу. Его значение None
снаружи.