Sto tentando di inviare una richiesta di posta all'app Flask da una delle sue viste, ma si blocca fino a quando non uccido il server. Se faccio la richiesta in JavaScript, funziona bene. Perché non funziona dal codice Python?Flask si blocca quando si invia una richiesta di posta a se stesso
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)
Sono abbastanza sorpreso. Ovunque vada, sento sempre che Flask non supporta il multi-threading. Usa sempre gunicorn e/o nginx per servire la tua applicazione. Lezione appresa, controllerà sempre le cose prima di darle per scontate :) –
@AbhirathMahipal il consiglio di usare Gunicorn e Nginx è corretto. Il server Flask, mentre supporta i thread, non è pensato per la produzione. Non è progettato per essere efficiente, stabile o sicuro, dovrebbe essere usato solo localmente durante lo sviluppo. – davidism
@davidismo concordato. Quello che voglio dire è che dopo aver ascoltato così tanto non ho mai preso in considerazione la possibilità che Flask abbia un'opzione filettata. –