Какой фреймворк выбрать для долгих вычислений на стороне сервера?

Здравствуйте. В рамках лабораторной в универе необходимо сделать сайт, на котором по определенному запросу будут запускаться долгие вычисления, которые потом надо отобразить. Решение, которое пришло мне в голову:
1) пришел запрос на вычисления.
2) сгенерить ссылку, по которой будут доступны результаты, поставить задачу в очередь, клиенту в качестве ответа отдать ссылку. Для удобства можно скажем через AJAX периодически ее проверять на предмет готовности результатов. Или же использовать WebSoket. В общем в этом вопрос и заключается, что выбрать...
3) Когда вычисления готовы, поместить их в базу, соответственно при запросе на ссылку с результатом будет проверяться наличие в базе этих результатов и выдаваться ответ. Как-то оповестить клиента.

Подозреваю, что для таких задач есть фреймворки, думаю даже не один, подскажите пожалуйста, что лучше выбрать. Большой нагрузки (более 100 человек) не предполагается.
(предпочтительные языки: Python, Java, C++, PHP (в порядке убывания предпочтительности), но, думаю, смогу разобраться и в других)
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
nodejs + express + socket-io для апишки + websockets, что угодно для остального. Как вы и сказали, по запросы добавляются задачи в очередь, а как они выполняются - это уже дело третье. Обработчики задач могут периодически скидывать по http/tcp/udp ноде статус задач просто.

Вычислялку - зависит от того что оно будет вычислять но либо java либо C++ (либо Си, либо go либо rust).
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
при чем тут фреймфорк?
Ответ написан
romy4
@romy4
Exception handler
Если надо много и быстро посчитать, то c++ пойдёт маленький http сервер наваять. java медленней php.
Ответ написан
programmerjava
@programmerjava
Если на Java, то подойдет Spring Boot (легкая версия фреймворка Spring в настройке).
Сокеты легко будет поднять (используйте Socks.js + STOMP). Вычисления отложенные легко делать, все не сложнее чем в других языках. Встроенная многопоточность и коллекции для быстрых вычислений вам подойдут. Ну и в универе у вас возможно преподают Java и с радостью примут лаболаторную\курсовую\дипломную на ней
Ответ написан
Комментировать
HoHsi
@HoHsi
1 Вариант - Красивый
Поскольку знаете Python, то возьмите его + Celery / RabbitMQ. Это отличные брокеры. А уведомить пользователя можно или из самого воркера (плохой вариант) или через RPC.

А в качестве Веб фреймворка django.

2 Вариант - быстрый
Выбрать булюбой рантайм язык Node.js, Python, Go, over9000. И все сделать в рамках одного приложения. Т.е. как только поступает запрос от пользователя, сразу-же запускать долгоживущий процесс, который в конце напишет в базу, и может быть дернет функцию, которая уведомит пользователя через WebSocket / Email / Ajax.

3 Вариант - на**ярить
Берем, что угодно, даже не долгоживущий, пишем не нем ручку, которая делает запрос и пишет в базу задачу.
Делаем скрипт на чем угодно, который по крону проверяет эту самую очередь, и если там что-то есть выполняет эту задачу, и уведомляет пользователя, с.м. пункт 2.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы