Параллельная задача Fabric не привязана к определенному набору

1

Я ищу способ определить задачу с multirun, которая будет работать на множестве серверов, определенных в командной строке (через роли или хосты).

Все примеры, которые я видел до сих пор, пытаются сделать что-то вроде:

env('app-nodes').multirun('some command')

Но я не хочу жестко кодировать роль. Я бы хотел определить его с помощью fab -R... вместо этого. Какие у меня варианты?

Я ожидаю, что это сработает:

@task
def some_task():
    env().multirun('some command')

но это бросает TypeError: '_AttributeDict' object is not callable

  • 0
    Должна ли это быть функция Python, или GNU Parallel квалифицируется? youtube.com/watch?v=OpaiGYxkSuQ
  • 0
    Я хотел интегрировать его в существующий набор сценариев фабрики, поэтому желательно не проводить параллели.
Теги:
parallel-processing
fabric

1 ответ

0

Вы очень хотите использовать аргументы задачи и подавать их в tav env() следующим образом: http://docs.fabfile.org/en/1.1.1/usage/fab.html#per-task-arguments

Также почему вы ожидаете, что пустой набор для хостов будет работать?

  • 0
    В соответствии с: tav.espians.com/… ( #Contextualised Tasks) контекст может быть просто по умолчанию ... к сожалению, это не так (он устанавливается из параметров @task)
  • 0
    да из его документов это либо устанавливается как параметр из @task, либо в кортежах env.ctx. Таким образом, вы можете отредактировать значение ctx и использовать env () или просто сделать что-то вроде: def t (use_hosts): env (use_hosts) .run (..)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню