Рейтинг:1

Разверните приложение PHP, которое вызывает скрипты Python, на AWS

флаг in

Я сделал PHP-сайт, который вызывает группу рабочих Python в фоновом режиме (используя систему обработки очереди в laravel, где рабочий вызывает инструмент Python через CLI). Каждый инструмент Python имеет свою собственную настройку среды conda, необходимую для правильной работы.

Я могу достаточно хорошо запустить эту настройку на одном сервере, потому что все установлено на машине, но я хочу надежно развернуть ее в облаке (AWS).

Из того, что я читал, Elastic Beanstalk — довольно приятный и простой в распространении PHP-код с поддержкой развертывания новых версий и т. д., но я не понимаю, как включить свой код на Python.

Я, вероятно, должен изучить:

  • отделение моих инструментов Python от сервера PHP (с новой проблемой «как мне их вызвать и дождаться их результатов?»)
  • помещая все в контейнер докера и перестраивая его каждый раз, когда одному из инструментов или PHP требуется обновление (с новой проблемой «как сделать его избыточным»)

Какова ваша мудрость в развертывании такого рода установки?

Рейтинг:1
флаг cn

Elastic Beanstalk поддерживает различные расширения/конфигурации через eextensions, поэтому вы вполне можете заархивировать код Python и настроить его через него.

Что касается их разделения, вы попадаете в область распределенной системы. Распространенным шаблоном является запись сообщений в рабочую очередь (например, PHP -> AWS SQS), а рабочие подписываются/используют из этой очереди и запускают задачу. Результаты могут быть записаны в базу данных для извлечения. Таким образом, вы можете заставить PHP писать в SQS, преобразовывать команды Python в Lambdas (в зависимости от того, что им нужно делать) и записывать результаты в DynamoDB. Затем результаты могут быть получены исходным центральным сервером PHP.

Или, что касается избыточности, вы можете переместить часть вашей системы с хранимым состоянием в базу данных или центральную файловую систему, такую ​​как EFS, и использовать такие инструменты, как AWS ECS, для запуска контейнера и подключения к нему.

Потенциально существует множество способов решить эту проблему, в зависимости от требований к стоимости / отказоустойчивости / знаний и т. Д.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.