【问题标题】:Python: 404 Error when accessing page from localhostPython:从 localhost 访问页面时出现 404 错误
【发布时间】:2020-03-27 08:56:03
【问题描述】:

我现在遇到的情况阻碍了我的工作进展。

我正在尝试将 Flask 和 Sockets 一起使用,以便在我可以在 Web 浏览器上显示视频源之前检查某个用户是否已连接。

下面是我的代码。

from flask import Flask, render_template, Response, jsonify, request
from flask_socketio import SocketIO
from camera import VideoCamera, SocketConnections
import socket
import pickle
import struct
import new_client as NC #this is a client module

app = Flask(__name__)

video_camera = None
global_frame = None
urlfor_container = ""

HOST = ''
PORT = 5000


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')

s.bind((HOST, PORT))
print('Socket bind complete')
s.listen(10)
print('Socket now listening')
c = SocketConnections('127.0.0.1',5000)
c.Establish_Connection()

conn, addr = s.accept()
print('connected workstation ', addr)

data = b'' ### CHANGED
payload_size = struct.calcsize("L") ### CHANGED

# check if the connection was accepted
app.run(host='',threaded=True)

当我运行这段代码时,一切似乎都很好。

====== RESTART: C:\CENTRALIZED_SYSTEM_FILES\OpenCV Demozz\new_cam_serv.py ======
Socket created
Socket bind complete
Socket now listening
test message should print if code was accessed
connected
connected workstation  ('127.0.0.1', 59283)
* Serving Flask app "new_cam_serv" (lazy loading)
* Environment: production
[31m   WARNING: This is a development server. Do not use it in a production deployment.[0m
[2m   Use a production WSGI server instead.[0m
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

但是,当我尝试从 localhost (localhost:5000/127.0.0.1:5000) 访问网页时,我收到“404 Page Not Found”错误。我已经有一个模板文件夹以及 index.html 位于主模块所在的同一文件夹中,但是每次运行此代码时,我仍然会收到 404 消息。

另外,我尝试使用不同的 IP 地址变体,但没有成功,仍然是 404。

你们的任何帮助将不胜感激。谢谢。

编辑:我尝试在底部创建一个 if name=="ma​​in" 语句,然后将此代码 sn-p 插入子句中。然后我注意到烧瓶服务器成功运行并且我能够再次浏览该页面,但这是问题所在。在我中断执行之后,那是我的套接字连接代码唯一一次被执行。

所以我现在的问题是……socket 和 Flask 是否可以同时使用?

再次感谢您。

【问题讨论】:

    标签: python flask python-sockets


    【解决方案1】:

    我只想提供一个我找到解决方案的更新。确实可以同时使用socket和Flask。

    我发现 app.run() 需要一个有效的 IP 地址才能在与套接字一起使用时工作。 套接字的 IP 地址和 Flask 的 IP 地址必须是相同的 IP 地址,否则它将无法工作。 我在尝试调试脚本时发现了这一点,并注意到套接字和我脚本上的 Flask 指的是不同的 IP 地址。

    所以,我改变了:

    app.run(host='',threaded=True)
    

    到这里:

    app.run(host='127.0.0.1',threaded=True)
    

    我已经尝试过使用其他 IP 地址,它工作得很好。

    再次感谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 2018-01-19
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      • 2012-02-23
      相关资源
      最近更新 更多