Все: я ищу вход / руководство / и идеи дизайна. Моя цель - найти простой, но надежный способ извлечь полезную нагрузку XML из HTTP POST (без проблем с этой частью), проанализировать ее и запустить относительно долгоживущий процесс асинхронно.
Порожденный процесс требует значительных ресурсов процессора и длится примерно три минуты. Поначалу я не ожидаю большой нагрузки, но есть определенная вероятность того, что мне потребуется масштабировать ее по горизонтали между серверами, так как, надеюсь, трафик возрастет.
Мне очень нравится стек Celery / Django для этого использования: он очень интуитивно понятен и имеет все встроенные средства для выполнения именно того, что мне нужно. Я пошел по этому пути с усердием, но вскоре обнаружил, что мой маленький облачный сервер ОЗУ объемом 512 МБ имел только 100 МБ свободной памяти, и я почувствовал, что у меня возникли проблемы, когда я начал работать со всеми своими процессами, работающими в полном наклоне. Также у него есть несколько движущихся частей: RabbitMQ, MySQL, cerleryd, ligthttpd и контейнер django.
Я могу абсолютно увеличить размер своего сервера, но я надеюсь снизить затраты до минимума на этом раннем этапе этого проекта.
В качестве альтернативы я рассматриваю возможность использования витой для управления процессами, а также перспективного брокера для удаленных систем, если они понадобятся. Но, по крайней мере, для меня, хотя витая система великолепна, я чувствую, что подписываюсь на многое, идущее по этому пути: написание протоколов, управление обратными вызовами, отслеживание состояний заданий и т. Д. Преимущества здесь довольно очевидны - отличная производительность гораздо меньше движущихся частей и меньший объем памяти (примечание: мне нужно проверить часть памяти). Я сильно склонен к Python из-за этого - это гораздо приятнее для меня, чем альтернативы:)
Я был бы очень признателен за любую точку зрения на это. Я беспокоюсь о том, чтобы начать с неправильного пути, и повторение этого позже с производственным трафиком будет болезненным.
Матф