python能干什么
整理了Python的7大就业方向,希望大家能找到适合自己的,然后学习下去,完成人生的目标。
1、Web开发(Python后端)
Python有很多优秀的Web开发框架,如Flask、Django、Bootstar等,可以帮助你快速搭建一个网站。当需要一个新功能时,用Python只需添加几行代码即可,这受到了很多初创型公司的一致欢迎。
像知乎、豆瓣、小米这样的大厂,最早的网站都是用Python搭建的,国外则更多,如YouTube 、Quora、Reddit、Instagram、Netflix等代表地球顶级流量的大站,都构建在Python之上。
平均薪资:15~20K
技能要求:前端基础、Python基础、主流Python Web框架(Flask、Django等)、数据库等
2、Python爬虫工程师
顾名思义,就是用Python收集和爬取互联网的信息,也是小伙伴们入坑Python的第一驱动力。靠人力一星期才能完成的工作,你泡着咖啡、跑10分钟爬虫即可,又装X又实用,学会Python爬虫后,即使不做程序员的工作也能加分不少。
平均薪资:15~25K
技能要求:前端基础、Python爬虫库、数据库、JS反爬等
友情提示:注意法律风险
3、Python数据分析师
这个时代,数据和黄金一样宝贵,现在最火的公司如:今日头条、抖音、快手等,产品都建立在对用户的分析之上,更不用说淘宝、京东、拼多多这些 “定制化推荐” 的老手。
可以说,所有的商业公司都需要这样一个角色,Python数据分析师也成了目前最火的职业之一。
Python是目前数据分析业务中,最常用的语言。学会Python后,基本可以满足数据分析经理的招聘需求。
平均薪资:10~25K
技能要求:统计学基础、Python的数据分析库(Pandas、NumPy、matplolib)、数据库、机器学习框架(高端职位需要)
4、AI工程师
人工智能是目前最火的方向之一,薪资待遇非常高(土豪的代名词)。从招聘网站上可以看到,80K、100K 的职位也有很多,小编流下了没有技术的泪水,当然这些职位的要求也相对较高。
Python是人工智能时代的头牌语言,不管是机器学习(Machine Learning)还是深度学习(Deep Learning),最常用的工具和框架都需要用Python调用,如Numpy、scipy、pandas、matplotlib、PyTorch、TensorFlow等,因此Python是人工智能工程师的必备技能之一。
薪资:20~40K
技能要求:统计学基础、Python、数据分析库、机器学习、深度学习框架
5、自动化运维工程师
运维工程师经常要监控上百台机器的运行,或同时部署的情况。使用Python可以自动化批量管理服务器,起到1个人顶10个人的效果。
自动化运维也是Python的主要应用方向之一,它在系统管理、文档管理方面都有很强大的功能。
平均薪资:15~25K
技能要求:Python、shell、Linux、数据库、openpyxl库等
6、自动化测试工程师
测试的工作是枯燥和重复的,在过去,每次产品更新,都要重复测试一遍,效率低而且容易出错。
Python提供了很多自动化测试的框架,如Selenium、Pytest等,避免了大量的重复工作,Python自动化测试也变得越来越流行。
平均薪资:10~20K
技能要求:Python、自动化测试框架、Linux等
7、Python游戏开发
Python游戏开发的招聘集中在游戏服务器领域,主要负责网络游戏的服务器功能开发、性能优化等工作。
平均薪资:15~25K
技能要求:Python、Python Web框架、Linux、数据库、Nginx等
通过以上一系列的讲解,相信各位刚入门Python编程语言的人,对于Python主要用来做什么这个问题有了一定的了解。Python编程语言应用广泛,就业方向也是十分广阔,当下正是学习Python的好时机。
有python开发的监控工具吗
在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互。随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行的接口就各种出错了。
这个接口系统刚刚开发不久,整个系统中,处于比较边缘的位置,不像其他项目,有日志库,还有短信告警,一旦出问题,很多情况下都是用户反馈回来,所以,我的想法是,拿起python,为这个项目写一个监控。如果在调用某个第三方接口的过程中,大量出错了,说明这个接口有有问题了,就可以更快的采取措施。
项目的也是有日志库的,所有的info,error日志都是每隔一分钟扫描入库,日志库是用的mysql,表里有几个特别重要的字段:
有日志库,就不用自己去线上环境扫日志分析了,直接从日志库入手。由于日志库在线上时每隔1分钟扫,那我就去日志库每隔2分钟扫一次,如果扫到有一定数量的error日志就报警,如果只有一两条错误就可以无视了,也就是短时间爆发大量错误日志,就可以断定系统有问题了。报警方式就用发送邮件,所以,需要做下面几件事情:
1. 操作MySql。
2. 发送邮件。
3. 定时任务。
4. 日志。
5. 运行脚本。
明确了以上几件事情,就可以动手了。
操作数据库
使用MySQLdb这个驱动,直接操作数据库,主要就是查询操作。
获取数据库的连接:
def get_con():
host = "127.0.0.1"
port = 3306
logsdb = "logsdb"
user = "root"
password = "never tell you"
con = MySQLdb.connect(host=host, user=user, passwd=password, db=logsdb, port=port, charset="utf8")
return con
从日志库里获取数据,获取当前时间之前2分钟的数据,首先,根据当前时间进行计算一下时间。之前,计算有问题,现在已经修改。
def calculate_time():
now = time.mktime(datetime.now().timetuple())-60*2
result = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
return result
然后,根据时间和日志级别去日志库查询数据
def get_data():
select_time = calculate_time()
logger.info("select time:"+select_time)
sql = "select file_name,message from logsdb.app_logs_record " \
"where log_time "+"'"+select_time+"'" \
"and level="+"'ERROR'" \
"order by log_time desc"
conn = get_con()
cursor = conn.cursor()
cursor.execute(sql)
results = cursor.fetchall()
cursor.close()
conn.close()
return results
发送邮件
使用python发送邮件比较简单,使用标准库smtplib就可以
这里使用163邮箱进行发送,你可以使用其他邮箱或者企业邮箱都行,不过host和port要设置正确。
def send_email(content):
sender = "sender_monitor@163.com"
receiver = ["rec01@163.com", "rec02@163.com"]
host = 'smtp.163.com'
port = 465
msg = MIMEText(content)
msg['From'] = "sender_monitor@163.com"
msg['To'] = "rec01@163.com,rec02@163.com"
msg['Subject'] = "system error warning"
try:
smtp = smtplib.SMTP_SSL(host, port)
smtp.login(sender, '123456')
smtp.sendmail(sender, receiver, msg.as_string())
logger.info("send email success")
except Exception, e:
logger.error(e)
定时任务
使用一个单独的线程,每2分钟扫描一次,如果ERROR级别的日志条数超过5条,就发邮件通知。
def task():
while True:
logger.info("monitor running")
results = get_data()
if results is not None and len(results) 5:
content = "recharge error:"
logger.info("a lot of error,so send mail")
for r in results:
content += r[1]+'\n'
send_email(content)
sleep(2*60)
日志
为这个小小的脚本配置一下日志log.py,让日志可以输出到文件和控制台中。
# coding=utf-8
import logging
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('monitor.log')
fh.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
所以,最后,这个监控小程序就是这样的app_monitor.py
# coding=utf-8
import threading
import MySQLdb
from datetime import datetime
import time
import smtplib
from email.mime.text import MIMEText
from log import logger
def get_con():
host = "127.0.0.1"
port = 3306
logsdb = "logsdb"
user = "root"
password = "never tell you"
con = MySQLdb.connect(host=host, user=user, passwd=password, db=logsdb, port=port, charset="utf8")
return con
def calculate_time():
now = time.mktime(datetime.now().timetuple())-60*2
result = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
return result
def get_data():
select_time = calculate_time()
logger.info("select time:"+select_time)
sql = "select file_name,message from logsdb.app_logs_record " \
"where log_time "+"'"+select_time+"'" \
"and level="+"'ERROR'" \
"order by log_time desc"
conn = get_con()
cursor = conn.cursor()
cursor.execute(sql)
results = cursor.fetchall()
cursor.close()
conn.close()
return results
def send_email(content):
sender = "sender_monitor@163.com"
receiver = ["rec01@163.com", "rec02@163.com"]
host = 'smtp.163.com'
port = 465
msg = MIMEText(content)
msg['From'] = "sender_monitor@163.com"
msg['To'] = "rec01@163.com,rec02@163.com"
msg['Subject'] = "system error warning"
try:
smtp = smtplib.SMTP_SSL(host, port)
smtp.login(sender, '123456')
smtp.sendmail(sender, receiver, msg.as_string())
logger.info("send email success")
except Exception, e:
logger.error(e)
def task():
while True:
logger.info("monitor running")
results = get_data()
if results is not None and len(results) 5:
content = "recharge error:"
logger.info("a lot of error,so send mail")
for r in results:
content += r[1]+'\n'
send_email(content)
time.sleep(2*60)
def run_monitor():
monitor = threading.Thread(target=task)
monitor.start()
if __name__ == "__main__":
run_monitor()
运行脚本
脚本在服务器上运行,使用supervisor进行管理。
在服务器(centos6)上安装supervisor,然后在/etc/supervisor.conf中加入一下配置:
复制代码代码如下:
[program:app-monitor]
command = python /root/monitor/app_monitor.py
directory = /root/monitor
user = root
然后在终端中运行supervisord启动supervisor。
在终端中运行supervisorctl,进入shell,运行status查看脚本的运行状态。
总结
这个小监控思路很清晰,还可以继续修改,比如:监控特定的接口,发送短信通知等等。
因为有日志库,就少了去线上正式环境扫描日志的麻烦,所以,如果没有日志库,就要自己上线上环境扫描,在正式线上环境一定要小心哇~
如何利用Python自动监控网站并发送邮件告警
1、监控网站
监控网站其实就是去爬网页的源码,每次对比或检查网页源码特定位置的html代码是否有变化即可,具体可以用
from urllib import request
page = request.urlopen("网址")
html = page.read()
就可以获取网页源码;
2、发送高警
建议别用邮件,邮件发多几次就会认为你的发件箱有发垃圾邮件的嫌疑。用 喵提醒 ,是个公众号,可以免费发提醒到手机上。调用方法也和监控网页代码类似,具体自己看喵提醒的教程。
如何用 Python 监控系统状态
建立一个数据库“falcon”,建表语句如下:
CREATE TABLE `stat` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`host` varchar(256) DEFAULT NULL,
`mem_free` int(11) DEFAULT NULL,
`mem_usage` int(11) DEFAULT NULL,
`mem_total` int(11) DEFAULT NULL,
`load_avg` varchar(128) DEFAULT NULL,
`time` bigint(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `host` (`host`(255))
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
python黑客网络数据 怎么监听
涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http
涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下!
python爬虫被当做黑客攻击是怎么回事呢
网站有专门的条款说明用户应当遵守的规定,比如百度知道就对其内容拥有知识产权,在未经允许不能转载传播。网站虽然不知道你是否会去传播,但是可以通过访问网页的速度判断你是否是一个机器人。
要想避免网站发现你在爬内容,可以适当限制爬去网页的速度。