我现在的处境正在阻碍我的工作进展。
我正在尝试同时使用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甚至可以同时使用吗?
再次感谢您。
答案 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地址,并且效果很好。
再次感谢大家。