Python 使用flask托管图像,然后使用同一代码中的另一个view函数处理图像

Python 使用flask托管图像,然后使用同一代码中的另一个view函数处理图像,python,web-services,flask,Python,Web Services,Flask,因此,我使用flask托管一个图像,然后我想使用url向API发出post请求,所有这些都在同一代码中: @app.route('/host') def host(): return send_from_directory("C:/images", "image1.png") @app.route('/post') def post(): response = requests.post(url, data={'input':'<url for host>', he

因此,我使用flask托管一个图像,然后我想使用url向API发出post请求,所有这些都在同一代码中:

@app.route('/host')
def host():
    return send_from_directory("C:/images", "image1.png")

@app.route('/post')
def post():
    response = requests.post(url, data={'input':'<url for host>', headers=headers)
    return jsonify(response.json())
@app.route(“/host”)
def host():
从目录(“C:/images”、“image1.png”)返回send\u
@应用程序路径(“/post”)
def post():
response=requests.post(url,数据={'input':'',headers=headers)
返回jsonify(response.json())
我认为,由于这两个视图函数位于同一个python文件中,post()会被阻塞。 有解决这个问题的办法吗

PS:如果我在另一台机器上托管图像,它可以工作,但这不是我想要的。
谢谢!

我认为您的代码有一些问题

首先,我不相信Flask中有
@app.post()
装饰器。我猜你是在试图指定用户应该将该路由发布到哪个位置。这样做的方法是
@app.route('/post',methods=['post'])

接下来,当用户向该端点发送HTTP请求时,您似乎希望
/post
端点向用户指定的(?)URL发送post请求。对用户指定的/user POSTed URL执行此操作的方式如下(我没有运行此代码来测试它):

如果服务器知道要向其发送POST请求的URL,您可以让用户只发送GET请求:

@app.route('/send_post_request', methods=['GET'])
def send_post_request():
    dict_to_post = { 'input': url_for('hosts') }
    headers = {}  # Fill these in
    server_specified_url = ''  # Fill this in
    response = requests.post(server_specified_url, json=dict_to_post, headers=headers)
    return jsonify(response.json())

我认为你的代码有一些问题

首先,我不相信Flask中有
@app.post()
装饰器。我猜你是在试图指定用户应该将该路由发布到哪个位置。这样做的方法是
@app.route('/post',methods=['post'])

接下来,当用户向该端点发送HTTP请求时,您似乎希望
/post
端点向用户指定的(?)URL发送post请求。对用户指定的/user POSTed URL执行此操作的方式如下(我没有运行此代码来测试它):

如果服务器知道要向其发送POST请求的URL,您可以让用户只发送GET请求:

@app.route('/send_post_request', methods=['GET'])
def send_post_request():
    dict_to_post = { 'input': url_for('hosts') }
    headers = {}  # Fill these in
    server_specified_url = ''  # Fill this in
    response = requests.post(server_specified_url, json=dict_to_post, headers=headers)
    return jsonify(response.json())

是的,我想写
@app.route('/post')
而您发布的内容基本上就是我正在做的事情,它仍然处于阻塞状态。一段时间后,连接被中止。您确定旧版本的服务器没有继续运行吗?请尝试键入
Ctrl+Alt+Delete
并手动关闭所有正在运行的Python进程。此外,如果您向UR发送手动发布请求L您已经指定了,您确定收到响应吗?可能是Python服务器正在等待另一台服务器的响应。是的,我尝试手动关闭所有Python进程,但仍然是一样的。此外,我确实收到了对url的手动POST请求的响应。您能用调试器(如PyCharm中的调试器)运行代码吗并查看当请求传入时服务器上到底发生了什么?
requests.exceptions.ConnectionError:(“连接已中止”)、RemoteDisconnected(“远程端关闭连接,无响应”)
它会继续发送请求,并在一段时间后在未收到响应后放弃。首先,它会调用
主机()
查看函数,然后查看
post()
,但我认为它无法正常运行,原因与我前面提到的相同。是的,我是想编写
@app.route('/post'))
而您发布的内容基本上就是我正在做的事情,它仍然处于阻塞状态。一段时间后,连接被中止。您确定旧版本的服务器没有继续运行吗?请尝试键入
Ctrl+Alt+Delete
并手动关闭所有正在运行的Python进程。此外,如果您向UR发送手动发布请求L您已经指定了,您确定收到响应吗?可能是Python服务器正在等待另一台服务器的响应。是的,我尝试手动关闭所有Python进程,但仍然是一样的。此外,我确实收到了对url的手动POST请求的响应。您能用调试器(如PyCharm中的调试器)运行代码吗并查看当请求传入时服务器上到底发生了什么?
requests.exceptions.ConnectionError:(“连接已中止”)、RemoteDisconnected(“远程端关闭连接,无响应”)
它会继续发送请求,并在一段时间后在未收到响应后放弃。首先,它会调用
主机()
查看函数,然后查看
post()
,但我认为它无法正常运行,原因与我前面提到的相同。