Кросс-платформенное решение для прямой выгрузки заказов из облачного хранилища S3
Материал из PODS Wiki
Содержание
Прямая выгрузка из PrintOnDemandSolution S3
В рамках техпроцесса выгрузки готовых к печати заказов выполняются две группы операций -
- №1 рендеринг проекта пользователя в печатный формат (PDF/JPEG/etc...)
- №2 выгрузка файлов для печати на сервер печатного дома.
Операция №2 - т.е. выгрузка файлов на сервер, в стандартном исполнении происходит с использованием FTP протокола. Это классический, надежный протокол, однако при выгрузке большого количества заказов/файлов, общая скорость выгрузки может быть недостаточно быстрой. Для крупных печатных домов, с большим количеством обрабатываемых заказов, предложено кросс-платформенное решение для прямой выгрузки файлов из облачного хранилища PrintOnDemandSolution AzureBlob.
Требования к оборудованию
- Процессор 1 ГГц
- ОЗУ 512 Мб
- Дисковое пространство минимум 4,5 ГБ
Установка и настройка ПО
Для настройки выгрузки из AzureBlob на сервере печатного дома необходимо установить следующее программное обеспечение:
- .NET Core Runtime. Инструкция по установке для разных ОС https://www.microsoft.com/net/download/core
- PrintOnDemandSolution AzureBlob Downloader для загрузки файлов из Azure http://pods.printondemandsolution.ru/static/PODSDownloader.rar
Установка PrintOnDemandSolution AzureBlob Downloader
- Распаковать архив в директорию на сервере печатного дома
- В файле settings.json нужно прописать:
- DownloadPath - директория в которую будут загружаться скачанные файлы (должна быть доступна на запись пользователю от имени которого работает web-сервер)
- DownloadLimit - максимальное количество потоков загрузки
- PodsUrl - ссылка на титульную страницу PODS-сайта WL
- SecretKey - секретный ключ для входящих запросов
- В файле NLog.config нужно прописать путь, куда будут сохранятся логи загрузчика. Level на этапе отладки лучше оставить на уровне Debug, потом можно будет поменять на Error.
Запуск скрипта для работы с API PODS
- На веб-сервер печатного дома необходимо разместить скрипт, который будет обрабатывать уведомления платформы PODS о завершении рендеринга. API#Уведомление о завершении рендеринга проекта (для выгрузки из Blob Azure)
- Для старта выгрузки, надо передавать приложению ID заказа в качестве параметра. Команда для запуска "dotnet PodsDownloader.dll {orderId}".
Пример скрипта
<?php error_reporting(0); $orderId = $_POST['order_id']; $token = $_POST['token']; $sekret = 'aaaa'; $downloaderPath = 'E:\\PodsDownloader'; // validate request if($token != md5($orderId.$sekret)) { echo "error"; file_put_contents(dirname(__FILE__).'/pods.log', 'MD5 error'); exit; } chdir($downloaderPath); $pcs = popen(sprintf("dotnet PodsDownloader.dll %d", $orderId),"r"); pclose($pcs);;
Настройка выгрузки в панели управления PODS
- В разделе панели управления Справочник FTP создать новую запись, выбрать тип выгрузке "AzureBlob", задать произвольное название для данного сервера выгрузки.
- В разделе панели управления Настройки - Интеграция - в поле "Адрес API для уведомления об успешном рендеринге" прописать ссылку для вызова скрипта для работы с API PODS
- В настройках продуктов/форматов книг указать созданный ранее AzureBlob сервер выгрузки.
Рекомендации по включению нового вида загрузки
- Для проверки работы новой схемы создайте отдельную запись в справочнике FTP.
- Выберите сначала только 1-2 продукта для проверки выгрузки, например пару форматов фотокниг. В их настройках укажите новый целевой сервер, который вы создали в предыдущем пункте. В момент изменения типа выгрузки убедитесь, что в очереди нет выгружающихся заказов с указанными продуктами. Если смена вида выгрузки произойдет в момент работы старой выгрузки, то это не страшно - очередь PODS автоматически обработает ошибки выгрузки. Но для экономии времени, лучше действовать последовательно - старую выгрузку остановить, изменить тип выгрузки, запустить выгрузку заказов.
- После проведения успешных проверок на выбранных продуктах можно изменить тип выгрузки для остальных продуктов, например изменив настройки на основном сервере в справочнике FTP.