【发布时间】:2019-10-29 19:51:42
【问题描述】:
我需要发出一个将参数传递给另一个函数的发布请求。问题是这个函数需要很长时间来处理,并且请求最终会导致超时。我想创建一个异步调用来初始化函数,以便即使在发布请求结束后它也能继续在后台执行。
class Assincrono(Resource):
''' make a assyncronous post request '''
async def post(self):
async with aiohttp.ClientSession() as session:
with session.post('localhost:5000/classificator/') as resp:
return await resp.text()
class TrainResource(Resource):
''' route /classificator'''
def post(self):
content = request.json
result = ServiceModel().decision(content)
if result['status'] == 'error':
return Response(json.dumps(result), status=400, mimetype='application/json')
return Response(json.dumps(result), status=201, mimetype='application/json')
错误:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>TypeError: Object of type 'coroutine' is not JSON serializable // Werkzeug Debugger</title>
【问题讨论】:
-
实际上,标记为重复的解决方案并没有解决我的问题。我必须创建一个脚本来执行子进程。
标签: flask request timeout coroutine python-asyncio