烧瓶请求永远挂起

SW。

我试图了解为什么服务器不为第二个请求创建第二个线程:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章