Должен ли я использовать Laravel Queues для управления потоками в моем приложении

Я ищу несколько сторонних API для сбора информации по поисковому запросу пользователя. Я планирую выделить поток для каждого API, который я хочу использовать, чтобы минимизировать время отклика на моем конце. Я также хочу ограничить количество потоков, которые может запускать мое приложение в любое время из-за проблем с памятью / процессором.

Так как я использую Laravel в качестве своей платформы, я пытался сделать это с помощью очередей Laravel, но, похоже, у меня могут возникнуть проблемы с получением данных ответов из Job.

  • Являются ли очереди в Laravel правильным способом решения этой проблемы? Если да, то как мне
    прослушать статус задания и получить данные после его завершения? Я вижу некоторые вещи, которые указывают на то, что нужно закрыть работу, но что-то мне не нравится.

0

Решение

Это зависит. Очередь заданий и рабочий пул могут быть подходящими, если требуется действительно огромное количество вызовов API, особенно если эти вызовы API могут быть очень медленными. Но я бы постарался избежать всей этой архитектуры, если вы действительно не уверены, что она вам нужна.

Для начала я бы посмотрел на выполнение асинхронных запросов к внешним API и попытался сохранить все это в одном процессе. Клиентская библиотека Guzzle HTTP предоставляет очень удобный для программиста API для выполнения такого рода асинхронных запросов.

Если внешние запросы действительно многочисленны или медленны, вы можете рассмотреть возможность использования очереди. Но в этом случае вы рассматриваете реализацию множества логики для постановки в очередь всех заданий, затем опрашиваете их до тех пор, пока они не будут выполнены (по пути вы получите обратную связь с вашим пользователем), и наконец вернете объединенный результат. Это может оказаться необходимым, но я бы начал с более простой реализации, которую я описал выше.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]