Flask请求永远挂起

时间:2015-08-21 19:11:09

标签: python python-3.x flask request

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

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之后发布信息

为了便于开发,端点被存根以访问我本地服务器上的端点,但它只是永久挂起。为什么会出现这种情况,如果端点在我手动测试时响应?

这个http://127.0.0.1:5000/api/search回应:

{
  "results": [
    {
      "id": 1,
      "name": "record"
    },
    {
      "id": 2,
      "name": "record2"
    }
  ]
}

注意,如果我运行服务器的两个实例并将请求指向端口3000,则可以正常工作。

1 个答案:

答案 0 :(得分:2)

我认为您已经回答了自己的问题。服务器是单线程的:如果您在请求中向自己发出请求,它将挂起,因为它无法完成原始请求。

运行两个实例会修复此问题,因为第二个cab会响应内部请求。