2017-01-01 1 views
0

Я делаю сайт, где я обеспечить кнопку, которая может:Microservice очереди загрузки

  • POSTJSON на маршруте (ничего трудно сейчас)
  • , но этот процесс должен также начать кратные system commands, и в конце этого обеспечить почтовый пользователь может загрузить

Чтобы сделать это, я думаю, что мне нужно queue. Поскольку два пользователя, подключенных одновременно, не могут запускать этот процесс. Очередь в порядке? Но я не знаю, как сохранить сеанс и отправить обратно zip-файл ...

PS: Я использую angular2 & a Python WS.

+0

Почему два пользователя, подключенных одновременно, не могут запустить процесс? Это плохой дизайн. Много системных команд - плохой дизайн. Дайте более подробную информацию о том, чего вы хотите достичь. – user902384

ответ

0

Есть три части вашего вопроса:

во-первых, разрешить только один выполнение вашей системы команд для каждого пользователя одновременно.

Это может быть так же просто, как поддерживать синхронизированный бит флага на пользователя, который хранит 1, если запрос может быть обработан, 0 в противном случае. Когда приходит запрос на отправку, сначала проверьте, установлен ли этот флаг или нет. Продолжайте, если он не возвращает 1 код статуса не-200. Else, установите его на 0 и вызовите команды.

Во-вторых, обрабатывайте несколько запросов POST, которые запускают системные команды.

Вы должны использовать очередь, только если ваши системные команды занимают больше времени и обычно работают в фоновом режиме.

Три, как сохранить сессию

Сохраняя сеанс не является хорошей идеей. У вас есть два варианта. Во-первых, клиент постоянно объединяется в другую конечную точку, чтобы проверить, завершено ли создание zip или нет. Во-вторых, (лучше, чем сначала) использовать websockets для отправки уведомления обратно клиенту после завершения создания zip.

Смежные вопросы