用flask搭建的服务器的代码运行成功,但是在浏览器上一直转圈打不开

在pycharm搭建了一个服务器,可以运行成功,但是在浏览器上打不开,端口没有被占用,防火墙也没有阻拦,host换了“localhost”和“127.0.0.1”也都没有用

img

你都没写路由,不转圈才怪

那就是没搭建成功

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7623492
  • 这篇博客你也可以参考下:Flask--如何在pycharm中导入并运行flask项目
  • 除此之外, 这篇博客: Pycharm之开始使用、flask视频分镜头处理中的 2.我们需要对视频的每一帧进行提取。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 注意:(1)需要在项目文件夹下手动新建存放图片的文件夹;(2)尽量不要使用os.chdir()去改变路径,容易“迷惑”Pycharm寻找文件,使用默认地址即可;(3)一定注意路径的使用,比如:视频放在项目的所属文件中

    from flask import Flask,render_template
    import os
    import cv2
     
    app=Flask(__name__)
     
    def genFrame():
        v_path='static/ghz.mp4'
        image_save='static/pic'
     
        if not(os.path.exists(image_save)):
            os.mkdir(image_save)
     
        cap=cv2.VideoCapture(v_path)
        fc=cap.get(cv2.CAP_PROP_FRAME_COUNT)
     
        for i in range(int(fc)):
            _,img=cap.read()
            cv2.imwrite('static/pic/image{}.jpg'.format(i),img)
     
    @app.route('/')
    def index():
        genFrame()   
        return render_template('index.html')
     
    if "__main__"==__name__:
        app.run()

    html文件内容则为:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    视频分镜
    <br>
    <video width="180" height="320" controls autoplay>
      <source src="static/ghz.mp4" type="video/mp4">
      <object data="static/ghz.mp4" width="180" height="320">
        <embed width="180" height="320" src="static/ghz.mp4">
      </object>
    </video>
    
    </body>
    </html>

    结果:

     

    pic文件里也有所有的图片,例如:

     

  • 您还可以看一下 李焱兵老师的python flask web开发入门与项目实战课程中的 搭建开发环境[请安装专业版pycharm]小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,服务器无法在浏览器上打开可能有以下几个原因导致:

    1. 端口被占用:请再次确认端口是否被其他程序占用。可以使用netstat -ano命令(Windows)或lsof -i :port命令(Mac/Linux)检查端口占用情况。

    2. 防火墙阻拦:除了确认本地防火墙之外,也需要检查路由器或网络设备上的防火墙设置,确保端口被正确放行。

    3. Flask配置问题:请检查Flask应用程序的配置,特别是app.run()函数的参数。确保host参数设置为正确的IP地址,可以尝试将其改为0.0.0.0来监听所有网络接口。

    根据参考资料中的代码片段,可以看出这是一个基于Flask的API接口。如果代码已经成功运行并且没有报错,那么可能是服务器的问题。

    在代码中,letter_api.add_resource(Letter_Res,'/message',endpoint='message')这一行表明在路径/message上注册了一个资源。但这并不意味着服务器会自动监听该路径,还需要在app.run()函数中使用hostport参数指定服务器的监听地址和端口。

    以下是一个可能的解决方案:

    from flask import Flask
    
    app = Flask(__name__)
    
    # 加载资源
    from financial.resource.letter.letter_resource import Letter_Res
    app.add_resource(Letter_Res,'/message',endpoint='message')
    
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=5000)
    

    上述代码中的host参数设置为0.0.0.0,这将使服务器监听所有网络接口。port参数设置为5000,你可以根据需要更改为其他未被占用的端口。

    请尝试运行上述代码,并在浏览器中访问http://127.0.0.1:5000/message,如果仍然无法打开,请确认代码中是否还有其他相关配置,并提供更多细节以供进一步分析问题。