我已经使用Python中的Bottle Library创建了API。它的端点看起来像这样
@app.get('/api/users/<id>', name='user')
def get_user(model, id):
user = model.get_user(id)
if not user:
return HTTPError(404, 'User not found')
else:
response.content_type = "application/json"
return json.dumps(user)
我想在同一应用程序的其他函数中调用API
@app.route('/users/<id>')
def users (id=1):
user = request.get("http://localhost:8001/api/user/1")
return template('user', user=user)
但是,这没有显示任何结果。每次都使请求超时
所以我的问题是,如何使用Requests库或通过任何其他方式从该应用程序内调用Bottle API。
您是否以单线程模式(默认)运行Bottle?如果是这样,则您的内部get
请求将永远挂起。这是因为您的服务器一次只能处理一个请求,而您却要求它一次处理两个请求:第一次调用/users/<id>
,然后第二次调用/api/users/<id>
。
创可贴将修复为run the server in asynchronous mode。尝试这种方法,看看您的超时是否消失了: