首页 文章 精选 留言 我的

精选列表

搜索[Python],共10000篇文章
优秀的个人博客,低调大师

Python 发送图文格式的服务器性能报表邮件脚本(smtplib)

coding: utf-8 import smtplib from email.mime.multipart import MIMEMultipart #导入MIMEMultipart类 from email.mime.text import MIMEText #导入MIMEText类 from email.mime.image import MIMEImage #导入MIMEImage类 HOST = "smtp.gmail.com" #定义smtp主机 SUBJECT = u"业务性能数据报表" #定义邮件主题 TO = "testmail@qq.com" #定义邮件收件人 FROM = "mymail@gmail.com" #定义邮件发件人 def addimg(src,imgid): #添加图片函数,参数1:图片路径,参数2:图片id fp = open(src, 'rb') #打开文件 msgImage = MIMEImage(fp.read()) #创建MIMEImage对象,读取图片内容并作为参数 fp.close() #关闭文件 msgImage.add_header('Content-ID', imgid) #指定图片文件的Content-ID,<img> #标签src用到 return msgImage #返回msgImage对象 msg = MIMEMultipart('related') #创建MIMEMultipart对象,采用related定义内嵌资源 #的邮件体 msgtext = MIMEText(""" #创建一个MIMEText对象,HTML元素包括表格<table>及图片<img> <table width="600" border="0" cellspacing="0" cellpadding="4"> <tr bgcolor="#CECFAD" height="20" style="font-size:14px"> <td colspan=2>*官网性能数据 <a href="monitor.domain.com">更多>></a></td> </tr> <tr bgcolor="#EFEBDE" height="100" style="font-size:13px"> <td> <img src="cid:io"></td><td> <img src="cid:key_hit"></td> </tr> <tr bgcolor="#EFEBDE" height="100" style="font-size:13px"> <td> <img src="cid:men"></td><td> <img src="cid:swap"></td> </tr> </table>""","html","utf-8") #<img>标签的src属性是通过Content-ID来引用的 msg.attach(msgtext) #MIMEMultipart对象附加MIMEText的内容 msg.attach(addimg("img/bytes_io.png","io")) #使用MIMEMultipart对象附加MIMEImage #的内容 msg.attach(addimg("img/myisam_key_hit.png","key_hit")) msg.attach(addimg("img/os_mem.png","men")) msg.attach(addimg("img/os_swap.png","swap")) msg['Subject'] = SUBJECT #邮件主题 msg['From']=FROM #邮件发件人,邮件头部可见 msg['To']=TO #邮件收件人,邮件头部可见 try: server = smtplib.SMTP() #创建一个SMTP()对象 server.connect(HOST,"25") #通过connect方法连接smtp主机 server.starttls() #启动安全传输模式 server.login("mymail@gmail.com","mypassword") #邮箱账号登录校验 server.sendmail(FROM, TO, msg.as_string()) #邮件发送 server.quit() #断开smtp连接 print "邮件发送成功!" except Exception, e: print "失败:"+str(e)

优秀的个人博客,低调大师

Python爬虫从入门到放弃(二十)之 Scrapy分布式原理

关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列。 分布式架构 我将上图进行再次更改 这里重要的就是我的队列通过什么维护?这里一般我们通过Redis为维护,Redis,非关系型数据库,Key-Value形式存储,结构灵活。并且redis是内存中的数据结构存储系统,处理速度快,提供队列集合等多种存储结构,方便队列维护 如何去重?这里借助redis的集合,redis提供集合数据结构,在redis集合中存储每个request的指纹在向request队列中加入Request前先验证这个Request的指纹是否已经加入集合中。如果已经存在则不添加到request队列中,如果不存在,则将request加入到队列并将指纹加入集合 如何防止中断?如果某个slave因为特殊原因宕机,如何解决?这里是做了启动判断,在每台slave的Scrapy启动的时候都会判断当前redis request队列是否为空如果不为空,则从队列中获取下一个request执行爬取。如果为空则重新开始爬取,第一台丛集执行爬取向队列中添加request 如何实现上述这种架构?这里有一个scrapy-redis的库,为我们提供了上述的这些功能scrapy-redis改写了Scrapy的调度器,队列等组件,利用他可以方便的实现Scrapy分布式架构关于scrapy-redis的地址:https://github.com/rmax/scrapy-redis 搭建分布式爬虫 参考官网地址:https://scrapy-redis.readthedocs.io/en/stable/ 前提是要安装scrapy_redis模块:pip install scrapy_redis这里的爬虫代码是用的之前写过的爬取知乎用户信息的爬虫 修改该settings中的配置信息: 替换scrapy调度器SCHEDULER = "scrapy_redis.scheduler.Scheduler" 添加去重的classDUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" 添加pipeline如果添加这行配置,每次爬取的数据也都会入到redis数据库中,所以一般这里不做这个配置ITEM_PIPELINES = {'scrapy_redis.pipelines.RedisPipeline': 300} 共享的爬取队列,这里用需要redis的连接信息这里的user:pass表示用户名和密码,如果没有则为空就可以REDIS_URL = 'redis://user:pass@hostname:9001' 设置为为True则不会清空redis里的dupefilter和requests队列这样设置后指纹和请求队列则会一直保存在redis数据库中,默认为False,一般不进行设置 SCHEDULER_PERSIST = True 设置重启爬虫时是否清空爬取队列这样每次重启爬虫都会清空指纹和请求队列,一般设置为FalseSCHEDULER_FLUSH_ON_START=True 分布式 将上述更改后的代码拷贝的各个服务器,当然关于数据库这里可以在每个服务器上都安装数据,也可以共用一个数据,我这里方面是连接的同一个mongodb数据库,当然各个服务器上也不能忘记:所有的服务器都要安装scrapy,scrapy_redis,pymongo 这样运行各个爬虫程序启动后,在redis数据库就可以看到如下内容,dupefilter是指纹队列,requests是请求队列 所有的努力都值得期许,每一份梦想都应该灌溉!

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册