楼主今天第一次用python基于greenlet实现的第三方协程库gevent,由于gevent在切换IO操作(文件IO、网络IO)时是自动完成的,所以gevent需要通过修改Python自带的一些阻塞式系统调用的标准库,包括socket、ssl、threading和 select等模块,而变为协程,这一过程需要在启动时通过monkey patch完成。

importgeventfrom gevent importmonkey

monkey.patch_all()

楼主遇到的报错如下(简略版,只保留了前半部分报错内容):

Traceback (most recent call last):

File"/usr/local/python3.6/lib/python3.6/site-packages/gevent/greenlet.py", line 536, inrun

result= self._run(*self.args, **self.kwargs)

File"test.py", line 14, inreq

res=requests.get(url)

File"/usr/local/python3.6/lib/python3.6/site-packages/requests/api.py", line 72, ingetreturn request(‘get‘, url, params=params, **kwargs)

File"/usr/local/python3.6/lib/python3.6/ssl.py", line 459, inoptions

super(SSLContext, SSLContext).options.set(self, value)

[Previous line repeated316 more times]

解决方案:

仔细阅读官方文档发现有这样一段Tip:

Tip:

When monkey patching, itis recommended to do so as early as possible inthe lifetime of the process.

If possible, monkey patching should be the first lines executed.

Monkey patching later, especiallyif native threads have been created, atexit or signal handlers have been installed, or sockets have been created,

may lead to unpredictable results including unexpected LoopExit errors.

即,monkey patching需要放到第一行导入,否则会报错,所以,把 from gevent import monkey;monkey.patch_all() 放到文件最前面就好啦

注:

2、如果你用的python3.6,推荐使用asyncio

python gevent asyncio_python用from gevent import monkey; monkey.patch_all()之后报ssl等错误相关推荐

  1. 协程的概念及Python中利用第三方库gevent使用协程

    提到程序的并发操作,大多数人程序员首先想到的进程或者线程.我们先复习一下进程和线程的概念.   进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的 ...

  2. Python并发之协程gevent基础(5)

    1,gevent介绍 gevent是第三方库,通过 greenlet 实现 coroutine,创建.调度的开销比 线程(thread) 还小,因此程序内部的 执行流 效率高. gevent 实现了 ...

  3. python gevent教程_Python的gevent框架的入门教程

    Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...

  4. Python并发之协程gevent基础

    基本示例 from gevent import monkey monkey.patch_all() # 记住一定放在第一行,这里是打补丁的意思,time模块在使用协程gevent模块的时候,必须打补丁 ...

  5. Python并发之协程gevent数据结构和实践(6)

    greenlet instances 之间的关系存在两种: 仅有包含于 greenlet instances 集合的关系 同步关系,即存在协作关系 第一种形式很常见,不同的 greenlet inst ...

  6. [gevent源码分析] gevent两架马车-libev和greenlet

    本篇将讨论gevent的两架马车-libev和greenlet如何协同工作的. gevent事件驱动底层使用了libev,我们先看看如何单独使用gevent中的事件循环. #coding=utf8 i ...

  7. python运行异常UserWarning:Could not import the lzma module .Your installed Python is incomplet

    python运行异常UserWarning:Could not import the lzma module .Your installed Python is incomplete(import p ...

  8. Python 模块/包的导入以及 import 的用法总结

    Python 模块/包的导入以及 import 的用法总结 一.模块/包 1. 前言 一个以 .py 为后缀的 Python 文件就是一个模块. 包是一个文件夹或一个目录. 每个包都有一个全局定义的配 ...

  9. python3发送https请求_关于python 3.x:如何在不引起python3的SSL证书错误的情况下将POST请求发送到https...

    事情是这样的,我一直在尝试从python内部将POST请求发送到LOGIN到我的大学wifi页面,但是却收到SSL证书错误. POST请求在chrome的POSTMAN扩展中可以正常工作. 这是我使用 ...

最新文章

  1. 正确删除ORACLE归档日志文件
  2. 万年历c语言编程代码_C语言高效编程与代码优化~
  3. 更多核心、更大内存、更低成本 AMD皓龙6000欲成云计算基石
  4. 点焊机器人焊接超时_「技术帖」FSW点焊技术在车身铝薄板焊接中的应用
  5. 251f与ips屏显示器对比_8百左右预算,2020年PS平面设计/摄影后期显示器推荐/选购指南(全高清+高色域屏)...
  6. 在eclipse中如何搭建ssh框架
  7. python字典成绩_python字典总结
  8. 已经围上为何不算目_万达为何至今不上市,并非王健林真的钱多,许家印的境遇说明一切...
  9. 203.移除链表元素
  10. lisp 计算三点的夹角_平面三点计算夹角
  11. 《Using OpenRefine》翻译~14
  12. 风尚云网学习-前端页面敏感数据脱敏星号展示
  13. 易班登陆接口接入实例
  14. [966]无需ROOT就能让你用上Xposed框架
  15. 惠普台式计算机系统系统修复,一键恢复系统,详细教您怎么一键恢复惠普笔记本系统...
  16. 【优化理论】 共轭梯度下降算法实现
  17. 短信服务平台怎么选?
  18. 如何使用 Python 检测和识别车牌(附 Python 代码)
  19. 牛客寒假训练营4-爆炸的符卡洋洋洒洒 (dp变形)
  20. 初识OpenVINO

热门文章

  1. Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
  2. mac sierra 10.12部分注册机Special-K+CORE Keygen不能运行的问题
  3. StringBuilder和Char[]在平台调用中的差异
  4. 数据库查询经常卡死?面对亿级大数据量,我是这么展示分析的
  5. 要怎么样做一个合格点的程序猿呢?
  6. 【转载】浅谈 看图软件 的设计与实现
  7. 。rdquo;小杉很平静的飞鸽传书2009
  8. 了解情况的 飞鸽传书官方网站 时候
  9. TCP-Traceroute 核心代码
  10. 无需破解,Python这个神器帮你免费获取资源,赶紧收藏!