Flask gevent启动报错UnicodeDecodeError

文章目录

  • 环境
  • 代码
  • 报错Track
  • 解决思路

环境

  • acondana 24.1.2
  • python 3.7.13 32bit
  • flask 2.2.3
  • gevent 21.8.0

代码

port = 7236
logging.basicConfig(level=logging.INFO,  # 控制台打印的日志级别filename='./logs/app.log',  # 将日志写入log_new.log文件中filemode='a',  # 模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志 a是追加模式,默认如果不写的话,就是追加模式format="%(asctime)s:%(levelname)s:%(name)s -- %(message)s", datefmt="%Y/%m/%d %H:%M:%S"  # 日志格式)
server = pywsgi.WSGIServer(('0.0.0.0', port), app, handler_class=WebSocketHandler)
server.serve_forever()

报错Track

Process Process-1:
Traceback (most recent call last):File "C:\Users\Lenovo\.conda\envs\python37_32\lib\multiprocessing\process.py", line 297, in _bootstrapself.run()File "C:\Users\Lenovo\.conda\envs\python37_32\lib\multiprocessing\process.py", line 99, in runself._target(*self._args, **self._kwargs)File "C:\Jexhen\WorkSpace\cjspd_print_plugin_win7_32\cjspd_print_client.py", line 63, in run_serverserver.serve_forever()File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\baseserver.py", line 398, in serve_foreverself.start()File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\baseserver.py", line 336, in startself.init_socket()File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\pywsgi.py", line 1546, in init_socketself.update_environ()File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\pywsgi.py", line 1558, in update_environname = socket.getfqdn(address[0])File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\_socketcommon.py", line 304, in getfqdnhostname, aliases, _ = gethostbyaddr(name)File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\_socketcommon.py", line 276, in gethostbyaddrreturn get_hub().resolver.gethostbyaddr(ip_address)File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\resolver\thread.py", line 66, in gethostbyaddrreturn self.pool.apply(_socket.gethostbyaddr, args, kwargs)File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\pool.py", line 161, in applyreturn self.spawn(func, *args, **kwds).get()File "src/gevent/event.py", line 329, in gevent._gevent_cevent.AsyncResult.getFile "src/gevent/event.py", line 359, in gevent._gevent_cevent.AsyncResult.getFile "src/gevent/event.py", line 347, in gevent._gevent_cevent.AsyncResult.getFile "src/gevent/event.py", line 327, in gevent._gevent_cevent.AsyncResult._raise_exceptionFile "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\_compat.py", line 65, in reraiseraise value.with_traceback(tb)File "C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\threadpool.py", line 167, in __run_taskthread_result.set(func(*args, **kwargs))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 0: invalid start byte

解决思路

  • 先去gevent的github查找相关issued
    gevent github issue#1717
    gevent issued response
  • 作者的意思说gevent只是对socket进行了封装,调用的还是socket的方法和gevent没有关系
  • 自己按照作者思路,确实报一样的错误
import socket
socket.getfqdn('0.0.0.0')
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "C:\Users\Lenovo\.conda\envs\python37_32\lib\socket.py", line 676, in getfqdnhostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 0: invalid start byte
  • 再次搜索相关博客得到答案
    如果电脑名是中文,Python中调用gethostbyaddr(name)函数会出错
    查看我的主机名确实是中文名,改成英文重启不会报错,但不是最终解决方案!

  • 于是根据报错路径查看gevent的源码

"C:\Users\Lenovo\.conda\envs\python37_32\lib\site-packages\gevent\_socketcommon.py", line 304, in getfqdnhostname, aliases, _ = gethostbyaddr(name)
  • 修改gevent的源码
    gevent源码
def getfqdn(name=''):"""Get fully qualified domain name from name.An empty argument is interpreted as meaning the local host.First the hostname returned by gethostbyaddr() is checked, thenpossibly existing aliases. In case no FQDN is available, hostnamefrom gethostname() is returned."""# pylint: disable=undefined-variablename = name.strip()if not name or name == '0.0.0.0':name = gethostname()try:hostname, aliases, _ = gethostbyaddr(name.encode('ascii','ignore'))# 主要是修改这里except error:passelse:aliases.insert(0, hostname)for name in aliases: # EWW! pylint:disable=redefined-argument-from-localif isinstance(name, bytes):if b'.' in name:breakelif '.' in name:breakelse:name = hostnamereturn name

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动硬盘无法被识别怎么办?恢复移动硬盘3个正确做法

移动硬盘已成为我们日常生活和工作中不可或缺的数据存储设备。然而当移动硬盘突然无法被电脑识别时&#xff0c;往往会让人倍感焦虑。面对这种情况我们不必过于慌张&#xff0c;下面一起来看看指南解决。 解决方法一&#xff1a;检查硬件连接与供电 检查接口连接&#xff1a…

手机短信删除了还能恢复吗?该怎么恢复呢?

在我们的日常生活中&#xff0c;手机短信已经成为我们与他人沟通的重要方式之一。然而&#xff0c;有时候我们会不小心删除了一些重要的短信&#xff0c;这时候就非常希望能够恢复它们。那么&#xff0c;手机短信删除了还能恢复吗&#xff1f;该怎么恢复呢&#xff1f;本文将告…

百度Comate:你的智能编程助手,让代码编写更高效

一、引言 随着AI和人工智能技术的快速发展&#xff0c;越来越多的行业开始尝试将AI技术应用于实际业务中&#xff0c;包括编程领域。目前逐渐有大量的IT开发工程师开始使用各类的AI工具来帮助改善编程体验、提高效率和增加代码质量&#xff0c;将极大地推动了编程行业的进步和…

[VulnHub靶机渗透] Hackademic: RTB1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

ABAP: BAPI_MATERIAL_SAVEDATA 创建、修改物料信息毛重不生效

1、BAPI_MATERIAL_SAVEDATA 修改物料信息 参考&#xff1a;https://blog.csdn.net/zhongguomao/article/details/51917696 clientdata-matl_group ls_in-matkl."物料组clientdata-base_uom ls_in-meins."基本计量单位clientdata-extmatlgrp ls_in-extwg."外…

数字藏品平台遭受科技攻击时的防护策略与攻击类型判定

随着区块链技术和数字经济的飞速发展&#xff0c;数字藏品平台逐渐成为炙手可热的投资领域。然而&#xff0c;这也使其成为了黑客攻击的重要目标。本文将深入探讨数字藏品平台可能遭遇的几种主要科技攻击类型&#xff0c;并提出相应的防护措施和判定方法。 一、51%攻击 攻击描…

山海鲸医疗科技:引领智慧医疗新潮流

随着科技的飞速发展&#xff0c;智慧医疗已经成为医疗行业创新的重要方向。在这个背景下&#xff0c;山海鲸智慧医疗解决方案应运而生&#xff0c;以其先进的技术和全面的服务&#xff0c;为医疗行业带来了前所未有的变革。 山海鲸智慧医疗解决方案是一套集成医疗信息化、大数…

Anatomical-Aware Point-Voxel Network for Couinaud Segmentation in Liver CT

文章目录 Anatomical-Aware Point-Voxel Network for Couinaud Segmentation in Liver CT摘要方法实验结果 Anatomical-Aware Point-Voxel Network for Couinaud Segmentation in Liver CT 摘要 在 CT 成像中&#xff0c;将肝脏准确分割为解剖片段对于手术规划和病变监测至关…

C++关键字、命名空间、输入输出

一、C C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。 二、C关键字 C关键字有些是C语言中原带的&#xff0c;也有一些是C本身的关键字&#xff0c;对于这些关键字&#xff0c;大家只需在学习过程中去理…

信息系统项目管理师0091:项目经理的能力(6项目管理概论—6.3项目经理的角色—6.3.3项目经理的能力)

点击查看专栏目录 文章目录 6.3.3项目经理的能力1.概述2.项目管理技能3.战略和商务管理技能4.领导力技能5.领导力与管理记忆要点总结6.3.3项目经理的能力 1.概述 项目经理需要重点关注三个方面的关键技能包括项目管理、战略和商务、领导力

图像降噪算法 BM3D 介绍

介绍 BM3D 是 “Block-Matching and 3D Filtering” 的缩写&#xff0c;即三维块匹配滤波&#xff0c;它是一种用于图像去噪的算法。该算法来源于 一篇“Image and video denoising by sparse 3D transform-domain collaborative filtering”的高质量文章&#xff0c;文章的作…

原创度高!性能好!|基于信息共享与黄金搜索的改进星鸦优化算法在50+个函数上进行测试(Matlab)

文章来源于我的个人公众号&#xff1a;KAU的云实验台&#xff0c;主要更新智能优化算法的原理、应用、改进 前面的文章中&#xff0c;KAU介绍了星鸦优化算法(Nutcracker Optimization Algorithm&#xff0c;NOA)[1]&#xff0c;NOA算法模拟了星鸦觅食、存储以及缓存搜索、恢复…

SSL证书中DV、OV和EV有什么区别,又该如何选择

SSL&#xff08;安全套接层&#xff09;证书作为一种加密工具&#xff0c;确保了网站与其用户之间传输的信息的安全性。而在选择SSL证书时&#xff0c;我们通常会看到三种类型&#xff1a;域名验证&#xff08;DV&#xff09;、组织验证&#xff08;OV&#xff09;和扩展验证&a…

信息系统项目管理师0090:项目经理的影响力范围(6项目管理概论—6.3项目经理的角色—6.3.2项目经理的影响力范围)

点击查看专栏目录 文章目录 6.3.2项目经理的影响力范围1.概述2.项目3.组织4.行业5.专业学科6.跨领域6.3.2项目经理的影响力范围 1.概述 项目经理在其影响力范围内可担任多种角色,这些角色反映了项目经理的能力,体现了项目经理的价值和作用,项目经理会涉及项日、组织、行业、…

免费开源论坛社区社交圈子系统,圈子系统,系统开发,支持二开,包含公众号/app/H5,源码交付!

一款追求体验的社区论坛圈子系统 什么是圈子交友系统&#xff1f; 圈子交友系统(多客开源圈子系统)为会员提供精准交友服务 结合多种营销机制为创业者提供低成本、高效获取注册会员&#xff0c;是婚恋交友行业的创业利器&#xff01; 多类型内容形式 多场景应用 精准推广、直…

vue cli 自定义项目架子,vue自定义项目架子,超详细

脚手架Vue CLI基本介绍&#xff1a; Vue CLI 是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 脚手架优点&#xff1a; 开箱即用&#xff0c;零配置内置babel等工具标准化的webpack配置 脚手架 VueCLI相关命令…

拼多多标准推广二阶段跑不动怎么办

拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&#xff0c;不成交不扣费。是商家破零、积累基础销量的重要…

MongoDB(四):条件操作符

条件操作 1、概述2、比较操作2.1、大于操作符-$gt2.2、大于等于操作符-$gte2.3、小于——$lt2.4、小于等于——$lte2.5、范围查询 3、总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以扫描下方二维码关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 1、…

数据分析的数据模型

数据分析的数据模型 前言一、优化模型1.1线性优化模型1.1.1线性优化模型定义1.1.2线性优化模型求解算法1. 1.2.1图解法1. 1.2.2. 单纯形法 1.1.3 线性优化模型的应用 1.2非线性优化模型1.2.1非线性优化模型定义1.2.2非线性优化划模型求解方法1. 2.2.1有约束非线性模型算法1.2.2…

【Linux 基础 IO】文件系统

文章目录 1.初步理解文件2. fopen ( )的详解 1.初步理解文件 &#x1f427;① 打开文件&#xff1a; 本质是进程打开文件&#xff1b; &#x1f427;②文件没有被打开的时候在哪里呢&#xff1f; ----- 在磁盘中&#xff1b; &#x1f427;③进程可以打开很多个文件吗&#xff…