Создание неблокирующего сервиса restful с помощью aiohttp

Требование:

  1. веб-сервис для поддержки инициализации функции обучения модели машинного обучения и возврата к успеху, который занимает около 4 часов.

  2. Для поддержки функции прогнозирования на ранее обученных моделях.

  3. Обе вышеперечисленные функции должны работать параллельно без блокировки.

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

Я искал модули асинхронного веб-сервиса и нашел aiohttp. Я написал пример кода ниже, но мне кажется, что если я запускаю функцию run_job, то функция предиката блокируется.

from aiohttp import web


async def training_job():
     for i in range(100100):
        print(i)
     return i

async def predict(request):
    ## some logic
    text = "Value after logic"
    return web.Response(text=text)

async def run_job(request):
    result = await training_job()
    return web.Response(text="Done")

app = web.Application()
app.add_routes([web.get('/', predict),
                web.get('/run_job', run_job)])

web.run_app(app)

0 ответов

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