1. 程式人生 > >Python後端相關技術/工具棧

Python後端相關技術/工具棧

平臺 環境 pow 性能 ive ont sent 工具 解釋

轉載http://python.jobbole.com/83486/

整理下目前涉及到的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, 一個文件, 足夠小

  • ORM
    SQLAlchemy

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 很牛的抓取框架, 適合規模較大,需求復雜的的抓取任務

  • 搜索
    solr

完成搜索功能, 雖然Python也有一些實現, 但是感覺還是使用成熟的方案會好些, 文檔/資源豐富, 便於開發和維護. Solr, 足夠簡單及強大.

  • 好用的第三方

requests HTTP for humans, 非常好用, 強烈推薦

jieba 中文分詞

  • 異步和隊列

gearman 支持分布式的任務分發框架, 並行/不同語言之間的通信. 之前使用主要用來跨機器任務分發.

celery 分布式任務隊列

zeromq 之前使用的消息系統是基於這個的, 沒有研究過

  • 日誌

logstash 日誌收集和分析, 支持不同來源不同格式, 進行統一收集和分析處理

Elasticsearch 數據

Kibana A log analyzing web interface for logstash and elasticsearch

三者組合

  • 項目管理

tower

Python後端相關技術/工具棧