分享flask_socketio配置时遇到的一些问题

2024-01-22 07:12

本文主要是介绍分享flask_socketio配置时遇到的一些问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

flask_socketio

1.前言

flask_socketio应用启动后,在控制台中,存在着flask_socketio这些烦人的log

一堆的get和post几秒一个让我什么都看不清,因此想要关掉log
请添加图片描述

结果没想到,找了很多办法半天去不掉flask_socketio的log

试过了

  • socketio初始时禁用logger,发现默认值就是false,不用禁用
  • socketio初始时禁用engineio_logger,默认值也是false
  • import logging进行调整,socketio.logger.setLevel(logging.WARNING),没用

2.async_mode

之后突然发现调整初始时的async_mode就可以正常进行logging配置,我原本是:

socketio = SocketIO(app,async_mode='threading',cors_allowed_origins="*",  # 允许所有来源连接,也可以指定特定的来源logger=True,engineio_logger=True
)

把其中的async_mode改成”eventlet“(默认值也是这个),log就正常了

但是又出现了新的问题,整个程序卡在某个地方了

找了下发现是背景循环任务socket_io.start_background_task卡住了:

self.socket_io.start_background_task(self.emit_available_gpu_info)

在我的代码中,用到了time.sleep函数,这和eventlet相冲突,在eventlet框架下应当用eventlet.sleep

    def emit_available_gpu_info(self):while True:available_gpu_info = self.module_gpu_management.get_available_gpu_info()try:self.socket_io.emit('gpu_status', available_gpu_info)Log.info(f"广播可用GPU信息:{available_gpu_info}")except Exception as e:Log.error(f"广播可用GPU信息时出错:{e}")eventlet.sleep(5)

改好后,程序正常

3.threading

之后测试时又出现了新的问题,我的一个线程,每次发送emit信息都”似乎“是正常的,因为flask_socketio的日志中看到了发包信息

但是客户端却一点动静没有,也就是说flask_socketio emit没有反应

又又又找了半天,发现因为是我之前用的threading,似乎也与这个框架冲突?

这也是我的一个背景任务:

thread = threading.Thread(target=self.thread_target_mission_starter)
thread.start()

改成socket_io.start_background_task后一切正常

self.socketio.start_background_task(self.thread_target_mission_starter)

这篇关于分享flask_socketio配置时遇到的一些问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632222

相关文章

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

Idea插件MybatisX失效的问题解决

《Idea插件MybatisX失效的问题解决》:本文主要介绍Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、重启idea或者卸载重装MyBATis插件(无需多言)二、检查.XML文件与.Java(该文件后缀Idea可能会隐藏

Nginx 访问 /root/下 403 Forbidden问题解决

《Nginx访问/root/下403Forbidden问题解决》在使用Nginx作为Web服务器时,可能会遇到403Forbidden错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录解决 Nginx 访问 /root/test/1.html 403 Forbidden 问题问题复现Ng

Python的pip在命令行无法使用问题的解决方法

《Python的pip在命令行无法使用问题的解决方法》PIP是通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载、更新等功能,安装诸如Pygame、Pymysql等Pyt... 目录前言一. pip是什么?二. 为什么无法使用?1. 当我们在命令行输入指令并回车时,一般主要是出现以

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no