Python後端相關技術/工具棧

wklken發表於2015-12-01
整理下目前涉及到的python的技術棧和工具棧(用過或瞭解的, 其他的後續用到再補充)

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


Log:

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

Python後端相關技術/工具棧 Python後端相關技術/工具棧

相關文章