Python后端相关技术/工具栈

  • 编辑器

最常见: vim / SublimeText2 / PyCharm

Vim有兴趣可以看看 k-vim 适合Python/Golang开发

  • 本地环境
    pip/easy_install 包管理

viertualenv + virtualenvwrapper 库/版本管理, 环境隔离

ipython/ipdb

  • Web 框架
    Python 的Web 框架非常多……

个人偏好[有分先后]

flask 轻量! 可以灵活组合各类组件进行开发(第三方组件很丰富), 简单高效, 便于快速开发和维护.

tornado 异步, 高性能, 最新版本4.0

django 有些重, 配置和约定众多, 可以快速开发一些”管理”性质的后台, 其版本更新非常快

其他:

bottle 类flask, 一个文件, 足够小

SQLAlchemy is the Python SQL toolkit and Object
Relational Mapper that gives application developers the full power and
flexibility of SQL.

似乎这个就足够了, 无出其右

  • 模板

只提第三方(很多框架自带了, 例如Django/Tornado), 话说天下模板都大同小异

Jinja2, 最喜欢的一个, 之前写了篇 PYTHON模板-JINJA

Mako, 介绍PYTHON模板-MAKO

还有挺多的, 后续了解后补充

  • 代码管理及Wiki

使用git, 搭建gitlab
gilt针对项目级别, 可以用markdown写一些文档, 可以简单的code review, 可以进行讨论等等.

Wiki的选择:

gollum 很赞

trac老牌, 但是个人不大喜欢其语法编辑方式.

  • 代码发布

fabric + rsync

rsync 用于生产代码目录的同步, 足够简单强大

fabric 用于自动化部署, 将流程固化到脚本中重复使用, 提高效率降低风险, PYTHON FABRIC实现远程操作和部署

Fabric is a Python (2.5-2.7) library and command-line
tool for streamlining the use of SSH for application deployment or
systems administration tasks.

  • 项目部署

nginx 服务器, 主要用于负载均衡, 反代等

gunicorn a Python WSGI HTTP Server for UNIX, 用来运行Flask项目

Supervisor A Process Control System, 配置管理各种程序, 进程监控, 自动重启等

  • 监控

nagios 服务器各类参数监控, 负载,内存,IO, 网络等, 也可以配置对进程进行监控报警

sentry 实时收集事件日志, 可以在管理后台查看到当前程序异常及报错具体信息, 很强大的平台, 支持多种语言的程序

statsd + graphic

statsd 实时服务数据收集(e.g. counters and timers) 收集后数据提供给graphic进行展示

graphic 企业级开源监控工具(数据绘图工具),用于采集服务器实时信息并进行统计, Graphite 自己本身并不收集具体的数据,这些数据收集的具体工作通常由第三方工具或插件完成. 其控制台前端项目 tessera

  • NOSQL

redis 缓存/持久化/特殊需求(计数-排行榜-时间线等)

memcached 集群, 多用于有时限性质的缓存

mongodb 在技术选型玩了下, 没有正式在生产用过

  • 数据库

mysql 不解释, 感觉是不是所有Python的底层db都是mysql……

postgresql 开发日志统计系统使用过, 学院派, 各种牛叉的功能, 对json的支持令人印象深刻.

  • 抓取

beautifulsoup 配合urllib2或者requests库进项简单的抓取分析工作

scrapy 很牛的抓取框架, 适合规模较大,需求复杂的的抓取任务

完成搜索功能, 虽然Python也有一些实现, 但是感觉还是使用成熟的方案会好些, 文档/资源丰富, 便于开发和维护. Solr, 足够简单及强大.

  • 好用的第三方

requests HTTP for humans, 非常好用, 强烈推荐

jieba 中文分词

  • 异步和队列

gearman 支持分布式的任务分发框架, 并行/不同语言之间的通信. 之前使用主要用来跨机器任务分发.

celery 分布式任务队列

zeromq 之前使用的消息系统是基于这个的, 没有研究过

  • 日志

logstash 日志收集和分析, 支持不同来源不同格式, 进行统一收集和分析处理

Elasticsearch 数据

Kibana A log analyzing web interface for logstash and elasticsearch

三者组合

  • 项目管理

tower

时间: 2024-10-28 21:56:36

Python后端相关技术/工具栈的相关文章

2019全球C++软件技术大会 ,深度探讨围绕C++及相关技术栈的最佳工程实践

C++自1985年由Bjarne Stroustrup博士在贝尔实验室发明以来 ,作为计算机领域最有影响力的编程语言,其构建的庞大软件系统已经成为当今世界IT与互联网应用的关键支撑.秉承“全球专家.连接智慧”的理念,我们特邀C++之父Bjarne Stroustrup和众多在C++领域的一线专家.教育学者,于2019年11月2日-3日在上海世纪珀俪酒店举办“2019 全球C++软件技术大会”. 大会通过主题演讲.互动研讨.案例分享等形式,深度探讨围绕C++及相关技术栈的最佳工程实践.前沿应用和教

性能提升 25 倍:Rust 有望取代 C 和 C++,成为机器学习首选 Python 后端

https://www.infoq.cn/article/dgKDBiPl7KID0dyaE7Wl 在机器学习开发领域,如果我们纵观全局,撇除所有微小的细节,那么就可以提炼出机器学习开发中的两大不变步骤:模型训练和预测(或推断).如今,机器学习的首选语言是Python(除非你的工作环境有一些不寻常的约束才会有所不同),而这篇文章会带你走过一段新的旅程.希望当你看到最后会发现,使用 Rust 作为训练后端和部署平台的主意并不像听起来那样疯狂或令人困惑(除了标题提到的性能提升外,这种做法的好处其实还

Python后端开发面经

知识储备 python 后端工程师每天做什么? 网站后台业务逻辑 为网站提供API 为产品.运营提供后台网站工具,比如后台运营系统. 知识储备-上: 面试流程.技巧 通过不断的面试加深自己的面试经验 python语法基础.性能剖析优化 算法与数据结构.内置算法.排序-- 编程范式,各种模式(单例模式--) 操作系统,Linux命令.线程进程,操作系统内存管理.python垃圾回收机制 学习-下: 网络编程,网络协议:TCP/IP.UDP.HTTP--,python网络编程.并发网络库 <计算机网

python后端面试第七部分:项目部分--长期维护

##################    Python语法基础        ####################### 项目部分 4.python适合的场景有哪些?当遇到计算密集型任务怎么办? Python适合的场景1. 科学计算 2. 快速原型开发 3.网站. 4. 脚本. 实际上在各个方向上它都有挺多应用,前列几项算是比较火的吧.计算密集型任务模块用C/C++做.多进程,多线程也可以稍微提高些. 5.python高并发解决方案?我希望听到twisted->tornado->geve

Kindle 电子书相关的工具软件【转】

这里是与 Kindle 电子书相关的工具软件.它们可以帮助我们解决在日常使用电子书时所可能遇到的问题,比如 kindle 管理工具.kindle 转换工具.kindle电子书制作工具.kindle 推送工具等,可以实现管理电子书.推送电子书.转换电子书格式.修改电子书封面.添加电子书字体.破解 Kindle DRM.重排 PDF 文档.优化我的剪贴.清理 SDR 文件夹等各式各样的功能,还可以充分发挥我们的 DIY 精神,利用它们帮助我们修改.制作独一无二的属于自己的个性电子书.赶快来试试吧!

Python金融分析相关书籍推荐

Python是一门比较全面与平衡的语言,既能满足包括web在内的系统应用的开发,又能满足数据统计分析等数学领域的计算需求,同时也能作为胶水语言跟其它开发语言互通融合.在数据分析方面,没有其他语言能像Python这样既能精于计算又能保持性能,对于时间序列数据的处理展现了简单便捷的优势.下面是有关金融分析和量化交易的书籍推荐. 1.<Python金融大数据分析> 书籍介绍: <Python金融大数据分析>详细讲解使用Python分析处理金融大数据的专业图书:金融应用开发领域从业人员必读

关于Web开发里并发、同步、异步以及事件驱动编程的相关技术

一.开篇语 我的上篇文章<关于如何提供Web服务端并发效率的异步编程技术>又成为了博客园里“编辑推荐”的文章,这是对我写博客很大的鼓励,也许是被推荐的原因很多童鞋在这篇文章里发表了评论,有童鞋说我这篇文章理论化很严重,没有实际代码和具体项目做支撑,这个评论让我有种理论和实践脱节的味道,所以我想在这里谈谈我为什么要写这篇文章的原因,这篇文章是把我前不久学习多线程编程的一个总结. 当我从我书堆里找到所有与多线程开发相关的书籍简单阅读后,我发现了一个问题,在java里开发多线程最强有力的实践就是做服

网络视频相关技术介绍

AnyChat音视频互动开发平台(SDK)是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台.        AnyChat音视频互动开发平台(SDK)包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音.音视频同步)以及P2P网络模块(NAT穿透

C#身份证识别相关技术

原文:C#身份证识别相关技术 最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍三种身份证识别的方法. 一:调用大公司API接口,百度.云脉,文通科技都有相关的API介绍. 二:调用图像处理类库,EmguCV是OpenCV的一个跨平台的.Net封装,该封装也可以被编译到Mono平台和允许在Windows.Mac OS.Android.iPhone.iPad等多个平台上运行 三:调用Office2007 组件 一.证件识别A