Как я могу совместить колбу и название?
Как я могу объединить веб-приложение Flask и микросервисы Nameko?
Позвольте мне дать вам некоторый контекст. У меня есть флеш-приложение (http://flask.pocoo.org). Это приложение может выполнять длительные (5-10 минут) задачи. Я хочу иметь возможность писать и прикреплять дополнительные модули к этому приложению, пока он все еще работает. Это нормально, если я останавливаю приложение во время разработки, но я не могу остановить его в процессе производства.
У меня нет опыта работы с Nameko (https://nameko.readthedocs.org), это лучшее решение моей проблемы? И если это так - могу ли я использовать приложение Flask и микросервисы Nameko?
Ответы
Ответ 1
Участник здесь nameko. Я согласен с nathancahill, что сельдерей - хороший выбор для этого.
Вы можете использовать nameko и Flask вместе. Здесь приведен краткий пример: https://gist.github.com/mattbennett/4250ce5d56b36a99bc39
В этой конфигурации, однако, вы покрываете ту же землю, на которой был создан сельдерей, а именно на обработку длительных задач вне цикла запроса-ответа. Откровенно, пример в gist будет намного лучше реализован исключительно в качестве приложения nameko (с использованием встроенной точки входа http), потому что он не использует какие-либо более продвинутые функции веб-фреймворка, которые Flask дает вам.
Если вы хотите написать микросервисы, даже те, которые преимущественно основаны на HTTP, nameko предоставляет некоторые полезные инструменты для этого. Если вы просто хотите добавить асинхронную обработку в существующий webapp, выбор сельдерея будет стандартным выбором.
Ответ 2
Слышали ли вы о Pinball? Это Pinterest собственный менеджер рабочего процесса.
Он позволяет вам планировать и управлять масштабированием заданий на нескольких компьютерах, а также в Python.
Они рекламируют следующие принципы проектирования:
- Простой: основанный на легкодоступных абстракциях
- Расширяемый: компонентный подход
- Transparent: состояние, сохраненное в читаемом формате
- Надежность: компоненты без учета состояния
- Масштабируемость: масштабирование по горизонтали
- Удобный для администратора: может быть обновлен без прерывания рабочих процессов.
- Feature-rich: авто-повторы, сообщения для каждого задания, чередования времени выполнения, приоритеты, политики перерасхода и т.д.