要求:
webservice支持初始化机器学习模型的训练功能并返回成功,大约需要4个 小时即可完成。
以支持先前训练过的模型的预测功能。
以上两个函数均应以非阻塞方式并行运行。
我们能够通过使用celery创建任务队列并将训练功能推入队列来实现这一目标,但是我们想知道是否有更好的方法。
我寻找了异步Web服务模块并找到了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)