相关疑难解决方法(0)

带有要求的烧瓶破碎管

我想在一个烧瓶应用程序中发送一个本地REST请求,如下所示:

from flask import Flask, url_for, request
import requests

app = Flask(__name__)

@app.route("/<name>/hi", methods=["POST"])
def hi_person(name):
    form = {"name": name}
    return requests.post(url_for("hi", _external=True), data=form)

@app.route("/hi", methods=["POST"])
def hi():
    return 'Hi, %s!' % request.form["name"]
Run Code Online (Sandbox Code Playgroud)

发送curl -X POST http://localhost:5000/john/hi导致整个烧瓶应用程序冻结.当我发送一个kill信号时,我的管道出现故障.有没有办法防止烧瓶在这里冻结?

python ubuntu flask python-2.7

50
推荐指数
3
解决办法
4万
查看次数

从同一服务器调用REST API

我有一个Web应用程序,它由位于同一服务器上的REST API支持.假设我有一个Task可访问的资源/api/task/<task_id>和一个网页/create-task,它基本上只是一个创建任务的表单.有几种方法可以做到:

a)使用Javascript与REST API通信(不想这样做)

b)直接在数据库中创建对象

@app.route('/create-task', methods=['POST'])
def create_task(self):
    # create an object
    try:
        task = Task(request.form)
    except:
        # handle errors and put them to form
        pass
    # save it into db
    task.save()
Run Code Online (Sandbox Code Playgroud)

c)使用requests库调用REST API

@app.route('/create-task', methods=['POST'])
def create_task(self):
    # send request to REST API
    r = requests.post(url_for('api.task', _external=True), json=request.form.data)
    if r.status_code != 200:
        # handle errors and put them to form
        pass
Run Code Online (Sandbox Code Playgroud)

您认为哪种选择是最佳做法?考虑与错误处理和表单相关的问题.

有关的奖金问题flask-restful.假设我已经建立了一个使用flask-restful构建的工作API,并希望使用选项b).我可以以某种方式使用TaskResource.post这样做吗?

rest flask wtforms python-requests flask-restful

11
推荐指数
1
解决办法
9596
查看次数