flask + uwsgi + flask-socketio + nginx部署

python代码

from flask import Flask
from flask_socketio import SocketIO, emit
import threading

app = Flask(__name__)
Socket = SocketIO(app, cors_allowed_origins="*")

video_lock = threading.Lock()
run_thread = None


#连接成功时触发
@Socket.on('connect', namespace='/videos')
def connected_msg():
    print("连接成功")
    print('client connected.')


#断开连接时触发
@Socket.on('disconnect', namespace='/videos')
def disconnect_msg():
    print('client disconnected.')


# 自定义事件
@Socket.on('video', namespace='/videos')
def videos(v):
    emit('get_video', '1', namespace='/videos')

html代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js" integrity="sha512-q/dWJ3kcmjBLU4Qc47E4A9kTB4m3wuTY7vkFJDTZKjTs8jhyGQnaUrxa0Ytd0ssMZhbNua9hE+E7Qv1j+DyZwA==" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io('http://127.0.0.1:20000/videos');
    socket.on('connect', function() {  # 连接成功后发功信息給自定义事件
			socket.emit('video', {data: 'I\'m connected!'});
			
    });
	socket.on('get_video', (data)=>{  # 监听get_video
		console.log('13132');
		console.log(data);
	});
</script>

uwsgi.ini 配置

[uwsgi]
home = /python/yolov5/venv/
http = 127.0.0.1:8080
chdir = /python/yolov5/
wsgi-file = flask_yolov5.py
callable = app
chmod-socket = 777
master = true
disable-logging = false
daemonize = /tmp/mylog.log
http-websockets=true

nginx配置文件

    listen       20000;
        server_name  192.168.3.251;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        limit_rate   1000k;
        location / {
            add_header Access-Control-Allow-Origin *; #这里可换成页面的域名
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            uwsgi_send_timeout 600;        # 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。
            uwsgi_connect_timeout 600;   # 指定连接到后端uWSGI的超时时间。
            uwsgi_read_timeout 600;
            root html;
            index  index.html index.htm;
        }

     location /socket.io/ {
        proxy_pass http://127.0.0.1:8080/socket.io/;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask是一个基于Python的轻量级Web框架,它提供了简单易用的工具来构建Web应用程序。Flask具有灵活的设计,可以根据需求进行扩展和定制。它支持RESTful风格的API开发,并且具有良好的可扩展性,适用于开发小型到中型的Web应用。 uWSGI是一个Web服务器和应用服务器,它可以将Web应用程序从框架中分离出来,并通过WSGI协议与框架进行通信。它支持高并发和负载均衡,并且具有内置的缓存机制和性能监控。uWSGIFlask配合使用可以提高Web应用程序的性能和稳定性。 Nginx是一个高性能的开源HTTP服务器和反向代理服务器。它可以处理大量并发连接,并能有效地分发请求到后端服务器。Nginx的反向代理功能可以将请求转发给uWSGI服务器,然后由uWSGI服务器处理Flask应用程序的逻辑。 使用FlaskuWSGINginx的组合可以实现一个高性能的Web应用程序架构。首先,Flask用于开发Web应用程序的逻辑和路由。然后,uWSGI作为应用程序服务器,将Flask应用程序加载到内存中,并以WSGI协议与Nginx进行通信。最后,Nginx作为前端服务器,通过负载均衡和反向代理将请求分发到uWSGI服务器。 这种架构可以提供高并发、可扩展和稳定的Web应用程序。Flask提供了优雅的开发方式,uWSGI处理应用程序的逻辑和性能优化,而Nginx作为前端服务器提供高性能的负载均衡和反向代理。整个架构可以根据需求进行灵活的配置和扩展,以满足不同规模的Web应用程序的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值