asyncio

异常连接导致的内存泄漏排查

穿精又带淫゛_ 提交于 2021-02-18 01:18:19
背景 在生产环境中,部署在客户的程序在运行了将近两个月后发生了闪退。而且两个服务器的程序先后都出现了闪退现象。通过排查windows日志发现是OOM异常导致的闪退。本文记录了该异常事件完整的排查过程与解决方案。 在本篇文章中会涉及到以下技术知识点:使用windbg对dump文件进行内存分析、使用wireshark抓包分析、powershell脚本编写、完成端口及重叠I/O原理等。 详细流程 程序崩溃后,我们要求客户导出一个dump文件供我们分析,并提供程序相关的运行日志。同时查看了windows的相关日志确定了是由于OOM(Out Of Memory)异常导致的。 使用windbg分析dump文件 启动windbg打开dump文件 由于我们的程序是基于 .net framework 3.5 开发的,因此我们使用 SOS 的相关扩展命令进行分析。需要在windbg中导入 mscorwks .loadby sos mscorwks 想对windbg进行深入学习,可以查看《使用WinDbg》讲解的非常详细。 通过 !dumpheap -stat 对内存占用情况进行汇总统计。 ! dumpheap -stat .. . 00007ff7ffbc0d50 536240 17159680 NetMQ.Core.Utils.Proactor+Item 00007ff7ffbca7f8

Python 从业十年是种什么体验?

主宰稳场 提交于 2021-02-14 14:27:08
点击上方“ 咸鱼学Python ”,选择“ 加为星标 ” 第一时间关注Python技术干货! 作者: laisky(基于 CC BY 4.0 授权许可) 原题: Python之路(内容略有调整) 来源: https://laisky.com/p/python-road 一、概述 本文起源于我在 Twitter 上发布的关于 Python 经历的一系列话题。 出于某些原因,想记录一下我过去数年使用 Python 的经验和一些感悟。毕竟算是一门把我带入互联网行业的语言,而我近期已经几乎不再写 Py 代码, 做一个记录,也许会对他人起到些微的帮助,也算是纪念与感恩了。 二、摘录 推文地址:https://twitter.com/ppcelery/status/1159620182089728000 最早接触 py 是 2010 年左右,那之前主要是使用 c、fortran 和 matlab 做数值运算。当时在做一些文件文本处理时觉得很麻烦,后来看到 NASA 说要用 py 取代 matlab,就去接触了 py。 python 那极为简洁与优美的语法给了当时的我极大的震撼,时至今日,写 py 代码对我而言依然是一种带有艺术意味的享受。 首先开宗明义的说一句:python 并不慢,至少不够慢。拿一个 web 后端来说,一台垃圾 4 核虚机,跑 4 个同步阻塞的 django,假设

Python 从业十年是种什么体验?

a 夏天 提交于 2021-02-13 17:51:45
点击“ Python编程与实战 ”,选择“置顶公众号” 第一时间获取 Python 技术干货! 作者: laisky(基于 CC BY 4.0 授权许可) 原题: Python之路(内容略有调整) 来源: https://laisky.com/p/python-road 一、概述 本文起源于我在 Twitter 上发布的关于 Python 经历的一系列话题。 出于某些原因,想记录一下我过去数年使用 Python 的经验和一些感悟。毕竟算是一门把我带入互联网行业的语言,而我近期已经几乎不再写 Py 代码, 做一个记录,也许会对他人起到些微的帮助,也算是纪念与感恩了。 二、摘录 推文地址:https://twitter.com/ppcelery/status/1159620182089728000 最早接触 py 是 2010 年左右,那之前主要是使用 c、fortran 和 matlab 做数值运算。当时在做一些文件文本处理时觉得很麻烦,后来看到 NASA 说要用 py 取代 matlab,就去接触了 py。 python 那极为简洁与优美的语法给了当时的我极大的震撼,时至今日,写 py 代码对我而言依然是一种带有艺术意味的享受。 首先开宗明义的说一句:python 并不慢,至少不够慢。拿一个 web 后端来说,一台垃圾 4 核虚机,跑 4 个同步阻塞的 django,假设

大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏]

拟墨画扇 提交于 2021-02-06 05:31:20
点击“ python编程军火库 ”,“置顶”公众号 重磅干货,第一时间送达 大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏] aiohttp介绍及安装 1.背景介绍 2.aiohttp 是什么 3.aiohttp 核心功能 4.aiohttp 库安装 aoihttp 业务核心功能 1. 发起 get 请求 2. 发起 post 请求 3. 向 url 中传递参数 4. 向目标服务器上传文件 5. 设置请求超时 aoihttp 爬虫核心功能 1. 自定义cookie 2. 在多个请求之间共享cookie 3. 自定义请求头 4. SSL验证警告问题 5. 代理问题 aoihttp 连接池 1.使用连接器 2.限制连接池的容量 小结: 大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏] aiohttp介绍及安装 1.背景介绍 在 Python 众多的 HTTP 客户端中,最有名的莫过于 requests、aiohttp 和 httpx。在不借助其他第三方库的情况下,requests 只能发送同步请求;aiohttp 只能发送异步请求;httpx 既能发送同步请求,又能发送异步请求。在并发量大的情况下,如何高效的处理数据,异步是我们的优选,今天我们主要详解的是在生产环境广泛使用的 aiohttp。 2.aiohttp 是什么

大型fastapi项目实战 高并发请求神器之aiohttp(下)

点点圈 提交于 2021-02-05 12:14:49
点击“ python编程军火库 ”,“置顶”公众号 重磅干货,第一时间送达 大型fastapi项目实战 高并发请求神器之aiohttp(下) 1. 上节代码简单解释 2. aiohttp 性能测试 3. 解决 aiohttp 不支持 HTTPS 代理 总结 大型fastapi项目实战 高并发请求神器之aiohttp(下) 1. 上节代码简单解释 基于上节给出的代码实例,直接使用代码就可以工作,本节我们注解一下核心代码 # -*- encoding: utf-8 -*- import asyncio import aiohttp async def main (): async with aiohttp.ClientSession() as session: async with session.get( 'http://www.baidu.com' ) as resp: print (resp.status) res = await resp.text() print (res[: 100 ]) if __name__ == '__main__' : # 注意: # python3.7+ 支持写法 # asyncio.run(main()) # python3.6及以下版本写法 event_loop = asyncio.get_event_loop() result = event

asyncio和aiohttp

最后都变了- 提交于 2021-01-14 00:34:51
asynci o官网 https://docs.python.org/zh-cn/3/library/asyncio-task.html 下面为伪代码: import aiohttp import asyncio from bs4 import BeautifulSoup import pandas as pd # 将数据存入 li = []或数据库 #获取页面 li = [] async def fetch(url,session): async with session. get (url) as response: return await response.text # 解析网页 async def parse(html): soup = BeautifulSoup(html, ' lxml ' ) # 获取网页中的畅销书 book_list =soup.find( ' ul ' ,class_= ' book_list ' )( ' li ' ) for book in book_list: info =book.find_all( ' div ' ) # 获取每本畅销书的排名,名称,评论数,作者,出版社 rank = info[ 0 ].text[ 0 :- 1 ] name = info[ 2 ].text comments = info[ 3 ].text

Flask 作者 Armin Ronacher:我不觉得有异步压力

╄→гoц情女王★ 提交于 2021-01-12 02:59:05
https://zhuanlan.zhihu.com/p/102307133 英文 | I'm not feeling the async pressure 【1】 原作 | Armin Ronacher,2020.01.01 译者 | 豌豆花下猫@Python猫 声明 :本翻译基于 CC BY-NC-SA 4.0 【2】授权协议,内容略有改动,转载请保留原文出处,请勿用于商业或非法用途。 异步(async)正风靡一时。异步Python、异步Rust、go、node、.NET,任选一个你最爱的语言生态,它都在使用着一些异步。异步这东西有多好,这在很大程度上取决于语言的生态及其运行时间,但总体而言,它有一些不错的好处。它使得这种事情变得非常简单:等待可能需要一些时间才能完成的操作。 它是如此简单,以至于创造了无数新的方法来坑人(blow ones foot off)。我想讨论的一种情况是,直到系统出现超载,你才意识到自己踩到了脚的那一种,这就是背压(back pressure)管理的主题。在协议设计中有一个相关术语是流量控制(flow control)。 什么是背压 关于背压的解释有很多,我推荐阅读的一个很好的解释是: Backpressure explained — the resisted flow of data through software 【3】。因此

Flask 之父:我不觉得有异步压力

主宰稳场 提交于 2021-01-12 02:50:34
英文 | I'm not feeling the async pressure 原作 | Armin Ronacher,2020.01.01 译者 | 豌豆花下猫@Python猫 声明 :本翻译基于CC BY-NC-SA 4.0授权协议,内容略有改动,转载请保留原文出处,请勿用于商业或非法用途。 异步(async)正风靡一时。异步Python、异步Rust、go、node、.NET,任选一个你最爱的语言生态,它都在使用着一些异步。异步这东西有多好,这在很大程度上取决于语言的生态及其运行时间,但总体而言,它有一些不错的好处。它使得这种事情变得非常简单:等待可能需要一些时间才能完成的操作。 它是如此简单,以至于创造了无数新的方法来坑人(blow ones foot off)。我想讨论的一种情况是,直到系统出现超载,你才意识到自己踩到了脚的那一种,这就是背压(back pressure)管理的主题。在协议设计中有一个相关术语是流量控制(flow control)。 什么是背压 关于背压的解释有很多,我推荐阅读的一个很好的解释是:Backpressure explained — the resisted flow of data through software【3】。因此,与其详细介绍什么是背压,我只想对其做一个非常简短的定义和解释:背压是阻碍数据在系统中流通的阻力。背压听起来很负面—

零基础如何快速成为 Python 高手?

大憨熊 提交于 2021-01-02 11:39:23
如今学 Python 的程序员越来越多,甚至不少人会把 Python 当作第一语言 来学习。 不过尽管 Python 功能强大上手轻松,但并不代表它的学习曲线不陡峭,得来全不费工夫。 当推开 Python 的大门,你会发现 Python 入门简单但精通很难。看似语法记得滚瓜烂熟,但一进入实际项目,就被打回了原型。 比如这些问题你能第一时间想到答案吗: Python 中的协程和线程有什么区别? 生成器如何进化成协程? 并发编程中的 future 和 asyncio 有什么关系? 如何写出线程安全的高性能代码呢? 可能大部分初学者都会卡在这里。若真能解决这些问题,你就具备了成为合格 Python 工程师的必要条件。 为了系统地帮大家提升 Python 实战编程能力,迅速从初学者进阶为优秀的 Python 工程师,我联合前百度工程师开设了 《Python 核心技术与实战》 教程 。 我们不会去纠结某些生僻的知识点,而是 从实际出发,以工作中遇到的实例为主线,去讲解 Python 的核心技术和应用。 带你从基础语法起步,掌握语言的高级用法,再到项目中进行实战开发 ,让你把学到知识点通过项目都串联起来,融会贯通,形成自己的 Python 学习框架图 。 会带你从入门到进阶掌握下面 Python 核心知识点。 1.Python 基础入门 必学知识:【Python 基础数据结构】【Python

Python下载文件的11种方式

南笙酒味 提交于 2020-12-23 19:25:17
点击蓝色“ Python空间 ”关注我丫 加个“ 星标 ”,每天一起快乐的学习 译者:天天向上 英文原文: https://dzone.com/articles/simple-examples-of-downloading-files-using-python 在本教程中,你将学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、Amazon S3和其他资源。 最后,你将学习如何克服可能遇到的各种挑战,例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策略。 使用Requests 你可以使用requests模块从一个URL下载文件。 考虑以下代码: 你只需使用requests模块的get方法获取URL,并将结果存储到一个名为“myfile”的变量中。然后,将这个变量的内容写入文件。 使用wget 你还可以使用Python的wget模块从一个URL下载文件。你可以使用pip按以下命令安装wget模块: 考虑以下代码,我们将使用它下载Python的logo图像。 在这段代码中,URL和路径(图像将存储在其中)被传递给wget模块的download方法。 下载重定向的文件 在本节中,你将学习如何使用requests从一个URL下载文件,该URL会被重定向到另一个带有一个.pdf文件的URL。该URL看起来如下: 要下载这个pdf文件