Próbuję wysłać prośbę o dodanie do mojej aplikacji Flask z jednego z jej własnych widoków, ale zawiesza się, dopóki nie zabiję serwera. Jeśli wykonam żądanie w JavaScript, działa dobrze. Dlaczego nie działa z kodu Python?Flask zawiesza się podczas wysyłania żądania do siebie
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)
Jestem całkiem zaskoczony. Gdziekolwiek pójdę, zawsze słyszę, że Flask nie obsługuje wielowątkowości. Zawsze używaj gunicorn i/lub nginx do obsługi aplikacji. Lekcja, której się nauczyłeś, zawsze będzie sprawdzać rzeczy, zanim je przyjmą za pewnik :) –
@AhhirathMahipal rada do korzystania z Gunicorn i Nginx jest poprawna. Serwer Flask, gdy obsługuje wątki, nie jest przeznaczony do produkcji. Nie jest zaprojektowany tak, aby był wydajny, stabilny lub bezpieczny, powinien być używany lokalnie tylko podczas programowania. – davidism
@davidism agreed. Chodzi mi o to, że po usłyszeniu tak wielu rzeczy nigdy nie brałem pod uwagę możliwości, że Flask ma opcję gwintowania. –