Скрипт с временными очередями Python Flask

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

Когда пользователь подключается к моему серверу Flask, он отправляет браузеру пользователя страницу, а затем сценарий AJAX на этой странице заполняет страницу данными (это делается для повышения производительности пользовательского интерфейса). Эти данные поступают из другого API (API League of Legends), но для количества вызовов, которые я могу совершать в секунду, установлено ограничение скорости, поэтому я должен создать сценарий очереди.

В настоящее время я планирую использовать time.sleep() Функция после каждого вызова, но я беспокоюсь, что это не позволит серверу делать что-либо еще. Я все еще хочу, чтобы сервер отвечал на запросы страниц, пока вызовы API задерживаются.

Для этого я должен использовать многопроцессорность, или Flask имеет что-то встроенное, чтобы справиться с этим? Или я должен установить специальный плагин для этого?

Спасибо!

1 ответ

Решение

Я думаю, что рекомендуемый способ сделать это с помощью асинхронной очереди задач / заданий, таких как сельдерей

Использовать его очень просто, вам просто нужно поместить @app.task для функций, которые нужно запускать в фоновом режиме:

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

result = add.delay(2, 2)

У этого есть много особенностей и функциональных возможностей, и это сделает работу за Вас. Вы можете обратиться к документу для получения дополнительной информации.

Другие вопросы по тегам