Исходя из того, что вы написали, я предполагаю, что cs.create_server
неблокирует.В этом случае, да, вам нужно будет обернуть ваш чек в цикл do ... или какую-то похожую конструкцию.В противном случае вы проверяете значение точно один раз и затем выходите из метода execute.
Если вы собираетесь выполнить цикл в методе, вам следует добавить вызовы в спящем режиме, в противном случае вы собираетесь сжечь многоЦиклы процессора ничего не делают.В конечном итоге, решать, выполнять ли вам зацикливание или вызывать отдельную работу, а ваши работники в основном бездействуют.Иными словами, если это займет 5 минут.для вашего сервера, и вы просто зациклились, этот работник не сможет обрабатывать другие задания в течение 5 минут.Если это приемлемо, это, безусловно, самая легкая вещь.Если это неприемлемо, вам, вероятно, понадобится другая работа, которая принимает идентификатор вашего сервера и выполняет вызов API, чтобы узнать, доступен ли он.
Хотя сам этот процесс может быть сложным.Если по какой-либо причине ваш сервер никогда не подключается к сети, вы можете создавать рабочие места в ожидании его статуса до бесконечности.Таким образом, вы, вероятно, также хотите передать какой-то счетчик выполнения или отслеживать redis, поэтому вы прекращаете попытки после X попыток.Я также проверил бы resque-scheduler , чтобы вы могли контролировать, когда ваша работа будет выполнена в этом случае.