分享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

相关文章

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素