我试图了解为什么服务器不为第二个请求创建第二个线程:
from flask import render_template, redirect, url_for, jsonify
from . import pm
from .forms import NewForm
import requests, json
@pm.route('/pm/index')
def index():
return render_template('pm/index.html')
@pm.route('/pm/new', methods=['GET', 'POST'])
def newitem():
form = NewForm()
if form.validate_on_submit():
url = 'http://127.0.0.1:5000/api/search'
payload = {'some': 'data'}
r = requests.get(url)
print(r.status_code)
return redirect(url_for('material.index'))
return render_template('pm/new.html', form=form)
我有一个外部API,我想在用户POST到@ pm.newitem之后将信息发布到该API。
为了促进开发,该终结点被打中了我本地服务器上的终结点,但是它一直挂着。如果端点在我手动测试时是响应的,为什么会这样?
这个http://127.0.0.1:5000/api/search回应如下:
{
"results": [
{
"id": 1,
"name": "record"
},
{
"id": 2,
"name": "record2"
}
]
}
请注意,如果我运行服务器的两个实例并将请求指向端口3000,则它可以工作。
我认为您已经回答了自己的问题。服务器是单线程的:如果您在一个请求中向自身发出请求,则该服务器将挂起,因为它可能无法完成原始请求。
运行两个实例可以解决此问题,因为第二个出租车会响应内部请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句