向自己发送帖子请求时,Flask会挂起

Seb*_*son 12 python flask

我正在尝试从其自己的一个视图向我的Flask应用程序发送一个帖子请求,但它会挂起,直到我杀死服务器.如果我在JavaScript中执行请求,它可以正常工作.为什么不能使用Python代码?

from flask import Blueprint, render_template, abort, request, Response, session, url_for
from jinja2 import TemplateNotFound

from flask.ext.wtf import Form
from wtforms import BooleanField, TextField, PasswordField

import requests

login = Blueprint('login', __name__, template_folder='templates')

class LoginForm(Form):
    email = TextField('Email')
    password = PasswordField('Password')

@login.route('/login', methods=['GET', 'POST'])
    def _login():

    form = LoginForm(request.form, csrf_enabled=False)

    if form.validate_on_submit():
        return requests.post(request.url_root + '/api/login', data={"test": True})


    return render_template('login.html', form=form)
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 24

Flask的开发服务器默认是单线程的.它一次只能处理一个请求.发出请求阻塞,直到收到响应.Flask代码在一个线程中发出请求,然后等待.没有其他线程可以处理第二个请求.因此请求永远不会完成,原始请求将永远等待.

在开发服务器上启用多个线程或进程以避免死锁并解决紧急问题.

app.run(threaded=True)
Run Code Online (Sandbox Code Playgroud)

但是,永远不需要从应用程序内向应用程序发出完整的HTTP请求,这表明存在更深层次的设计问题.例如,观察内部请求将无法访问客户端浏览器上的会话.提取公共代码并在内部调用它,而不是发出新请求.