марионетка как заставить марионетку ждать несколько секунд

Я хотел бы запустить веб-сервис и подождать несколько секунд, чтобы получить результат.

Как лучше всего добиться ожидания в марионетке?


person icn    schedule 23.01.2013    source источник


Ответы (2)


Вы можете использовать команду linux sleep с exec и настроить ее для запуска после веб-службы. что-то типа :

exec { 'wait_for_my_web_service' :
  require => Service["my_web_service"],
  command => "sleep 10 && /run/my/command/to/get/results/from/the/web/service",
  path => "/usr/bin:/bin",
}
person iamauser    schedule 23.01.2013
comment
Возможно, вам придется использовать поставщика «оболочки», поскольку по умолчанию posix не использует оболочку. - person Lester Cheung; 27.07.2020

Мой подход к ожиданию только локально + настраиваемая повторная попытка.

define wait_for_port ( $protocol = 'tcp', $retry = 10 ) {
  $port = $title
  exec { "wait-for-port${port}":
    command  => "until fuser ${port}/${protocol}; do i=\$[i+1]; [ \$i -gt ${retry} ] && break || sleep 1; done",
    provider => 'shell',
  }
}

wait_for_port { '3000': }
person h0tw1r3    schedule 23.01.2018