Хостинг для программ: как запустить фоновую обработку на сервере

Программа должна разбирать загруженные файлы, выгружать отчёты или синхронизировать каталог, даже когда рабочий компьютер выключен. Для этого подходит хостинг, на котором можно держать постоянный процесс и сохранять задания между перезапусками. Если обработка занимает несколько минут, заведите очередь: она примет задание сразу, а отдельный обработчик выполнит его и сохранит результат.
Пользователь загружает архив. Веб-приложение сохраняет файл, возвращает номер задания и ставит его в очередь. В сообщение достаточно положить номер, адрес файла и параметры обработки. Воркер — отдельная программа — забирает задание, распаковывает архив, сохраняет результат и обновляет статус. Пользователь видит «ожидает», «обрабатывается», «готово» или «ошибка» и может закрыть вкладку. Сначала запустите один воркер. Храните входные файлы и готовые результаты на постоянном диске или во внешнем хранилище. Если используете RabbitMQ, объявите очередь с сохранением после перезапуска и публикуйте сообщения с признаком сохранения на диске. Подтверждение от брокера сообщает отправителю, что брокер принял сообщение; подтверждение от воркера означает, что задание обработано. Отправляйте второе подтверждение после записи результата и обновления статуса. Задание может прийти повторно, например если воркер записал результат, но потерял соединение до подтверждения. Используйте номер задания как уникальный ключ и записывайте результат по одному и тому же адресу. Если обработчиков несколько, защитите запись от одновременного выполнения одного задания: например, закрепляйте его за воркером атомарным обновлением в базе и задавайте срок захвата. Для временных ошибок задайте задержку и предел повторов, а постоянные ошибки переводите в отдельный статус. Проверьте требования программы до заказа: ОС и архитектуру, среду выполнения, системные библиотеки, дисковое пространство и права на установку. Для готового контейнера проверьте архитектуру образа и совместимость с версией ОС. Для платного ПО отдельно уточните, разрешает ли лицензия запуск на виртуальной машине и в каком случае нужна дополнительная активация. Оцените нагрузку на одном реальном файле и на небольшой серии. Для CPU важны время обработки и число параллельных задач. Для RAM — пиковое потребление одного воркера, память ОС и брокера. Для диска — исходники, распакованные файлы, результаты, журналы и свободное место для временных операций. Если очередь растёт, проверьте сначала, где задержка: на CPU, диске или во внешнем API. Для первого запуска подойдёт VPS с Linux, доступом к настройкам системы и возможностью увеличить ресурсы. Выбирайте подходящий образ и конфигурацию под свои файлы; если веб-приложение уже работает отдельно, проверьте, как воркер будет получать доступ к очереди и хранилищу. Сравните время выполнения и пиковое потребление ресурсов с контрольным запуском. Убедитесь, что логи содержат номер задания и причину ошибки, но не содержимое файлов и ключи. Сохраните конфигурацию службы, копию базы со статусами и данные, которые нельзя получить повторно. Проверьте восстановление на отдельной машине: она должна поднять обработчик и продолжить работу с известного состояния. Да, если тариф позволяет держать постоянный процесс. Настройте автозапуск после загрузки ОС и проверку выполнения заданий, чтобы заметить сбой. Да, когда программа выполняется на сервере как служба или отдельный контейнер. Если она запущена только внутри интерактивного сеанса, завершение сеанса может остановить процесс. Сайту может хватить готовой среды для ответов на веб-запросы. Программе с постоянным процессом нужны разрешение держать его запущенным, место для данных и способ настроить автозапуск. Проверьте правила тарифа для постоянных процессов, установки зависимостей и времени выполнения. Если…
Источник: vc.ru — vc.ru/topovik/2742667-hosting-dlya-programm-kak-zapustit-fonovuyu-obrabotku-na-servere