Я написал скрипт компьютерного зрения, который требует использования графического процессора, но мой основной веб-сервер не имеет графического процессора (и не может иметь его).
Таким образом, мой основной веб-серверполе A, и я купил отдельный сервер, поле B, с графическим процессором.
Рабочий процесс:
1) Пользователи моегосайт загружает фотографии в блок А.
2) Я обрабатываю их для обнаружения объекта на блоке В (в пакетах, поскольку код обнаружения объекта имеет медленный начальный запуск)
3) И затем я сохраняю результаты в поле A.
В настоящее время у меня есть 3 сценария cron:
1) блок A: скрипт создает список имен файлов самых последних необработанных 1000 файлов.
(выполняется каждые 5 минут и обычно занимает секунду.)
2) блок B: с помощью rsync скрипт извлекает список имен файлов из блока A, затем извлекает все файлы в списке, запускает обнаружение объектов Yolo в списке изображений и сохраняет результатults to results.txt
(выполняется каждые 5 минут, 1 минута после сценария 1 и обычно занимает 2 минуты.)
3) блок A: подключается другой сценарийв поле B, получает results.txt и обрабатывает их.Изображения помечаются как обработанные, поэтому при следующем запуске сценария (1) он больше не выполняет те же файлы.
(Это выполняется каждые 5 минут, за 1 минуту до сценария 1 и обычно занимает несколько секунд.)
Что бы я хотел:
Теоретически, я чувствую, что мог бы выполнить все это из одного сценария на коробке А,который был бы чище и проще.Я обеспокоен тем, что произойдет, когда один из сценариев будет отложен.Я мог бы написать логику, чтобы добавить некоторые проверки (например, touch script2_completed
), но я думаю, что я должен объединить всю логику в один скрипт, который выполняет код на обоих серверах.
Мое невежество:
Я никогда раньше этого не делал, и понятия не имею, как лучше всего это сделать, и что возможно / невозможно.
Например,если я начну запускать сценарий обнаружения удаленного объекта в блоке 2, будет ли сценарий, запущенный в блоке 1, дождаться завершения, прежде чем перейдет к следующей команде, или он окажется асинхронным, что нежелательно?
Большое спасибо!