分享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循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu