Python:从本地主机访问页面时出现404错误

时间:2020-03-27 08:56:03

标签: python flask python-sockets

我现在的处境正在阻碍我的工作进展。

我正在尝试同时使用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页”错误。我已经在主模块所在的同一文件夹中有一个模板文件夹以及index.html,但是每次运行此代码时,我仍然会收到404消息。

此外,我尝试对IP地址使用不同的变体,但还是没有问题,仍然是404。

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

编辑:我尝试在底部创建一条if name ==“ main ”语句,然后将此代码段插入该子句中。然后,我注意到Flask服务器成功运行,并且能够再次浏览该页面,但这是问题所在。在我中断执行之后,那是我的套接字连接代码唯一被执行的时间。

所以我现在的问题是...插座和Flask甚至可以同时使用吗?

再次感谢您。

1 个答案:

答案 0 :(得分:0)

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

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

所以,我改变了:

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

对此:

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

我已经尝试过使用其他IP地址,并且效果很好。

再次感谢大家。