原创 OpenTSDB使用過程中遇到的問題

前面是安裝流程 https://blog.ronpy.com/2018/05/opentsdb-setup.html sudo /etc/init.d/opentsdb start sudo /etc/init.d/opentsd

原创 python的性能優化方案

python的性能優化方案 python的GIL,多線程,多進程 GIL: Global Interpreter Lock(全局解釋器鎖),每個CPU在同一時間之內只能執行一個線程,因爲單核CPU的多線程其實都只是併發不是並行。

原创 ROS(機器人操作系統)教程(一)

ROS:ROS是用於編寫機器人軟件程序的一種具有高度靈活性的軟件架構,ROS也就是robot operating system,他的主要目標是爲了機器人研究和開發提供代碼複用的支持。ROS是一個分佈式進程,也就是節點框架,這些進程

原创 make和cmake詳解

平時我們工作的時候只要看到CMakeLists.txt文件,就會在終端使用cmake和make,但是很多時候我們並不清楚他們到底做什麼事 make 要設計一個軟件,我們首先編寫源碼,然後通過編譯器編譯和創建可執行文件,可執行文件就

原创 Python Websocket 實例 -- http接收數據websocket推出去

我們使用python的channels庫來使用Websocket HTTP接收數據: class MessageConsumer(generic_http.AsyncHttpConsumer): async def handle

原创 SqlAlchemy做數據庫緩存 -- dogpile.cache

dogpile是一種控制結構,它允許選擇單個執行線程作爲某些資源的“創建者”,同時允許其他執行線程在創建過程中引用此資源的先前版本。 dogpile.cache是​​一個緩存API,它提供了一個通用接口來緩存任何種類的後端。 首先

原创 任務隊列/任務調度:Celery和APScheduler(內含APScheduler實例)

Celery VS APScheduler: celery: celery是一個專注於實時處理和任務調度的任務隊列,任務就是消息(消息隊列使用rabbitmq或者redie),消息中的有效載荷中包含要執行任務的全部數據。我們通常將

原创 python的進階用法

python的模塊與包進階篇,自定義導入語句的祕籍 將代碼組織成很多分層模塊構成的包 folder/ __init__.py sub_folder/ __init__.py a.py b.py 封裝成包只用確保每

原创 使用Nginx+Gunicorn+systemd部署flask應用

Flask,Django自帶的web server目的就是用於開發,而不是生產環境,自帶的server應該只能開單進程,而gunicorn和wsgi是專門爲生產環境開發的,能配置更多從而處理更加複雜的請求狀態,性能和穩定性都更好。

原创 消息隊列(2) -- Redis實現消息隊列(多應用)

異步任務: 很多時候服務器做的事情不需要客戶端等待,所以可以把這些任務異步去做,主要原理是處理通知消息,然後針對通知消息通常是採取的隊列結構。 實現消費者和生產者的方式很多,可以使用Python的標準庫Queue: import

原创 公鑰與私鑰,以及nginx配置https

公鑰和私鑰: A有兩把鑰匙,一個是公鑰,一個是私鑰 公鑰是可以給別人的,所有A給了X,Y,Z三個人公鑰(三個人的公鑰是相同的) 場景一: X給A寫一封私密的信,所以用A的公鑰加密,那麼A收到信後,可以使用他自己手上的私鑰解密,那

原创 Ansible全套詳細教程

ansible入門 Ansible是一個配置管理和配置工具,使用SSH連接到服務器並運行配置好的任務,服務器上不需要安裝任何其他軟件,只需要開啓SSH,客戶端的ansible會完成所有其他的工作。 首先安裝Ansible: apt

原创 消息隊列(1) -- Blinker信號庫 for Python(單應用)

blinker是一個python的信號庫,既支持簡單的對象到對象通信,也支持針對多個對象進行組播,信號就是在框架的核心功能或者一些Flask拓展發生動作時所發送的通知,可以幫助解耦應用,解耦就是模塊間的耦合嚴重了,修改一些東西,可

原创 Linux上python如何切換版本

Could not import python modules: apt, apt_pkg. Please install python3-apt package 假設原本機子上面就有python2.7,然後我們使用pyenv安裝

原创 python使用typing

def greeting(name: str) -> str: return 'Hello ' + name 複雜類型typing: from typing import List Vector = List[float