rq 是Python的一個第三方模塊,使用rq可以方便快速的實現Python的隊列操作,實現多態電腦的分布式架構。其中 R是Redis的意思,Q是Queue的首字母,rq使用Redis和Queue實現分布式,分別實現了Master和Worker,通過Redis存儲任務隊列。
假設已經安裝了Python和pip,本文通過`pip來安裝rq
$sudo pip install rq
Redisrq模塊使用redis保存隊列信息,因此可以保證多台機器同時讀取同一個隊列,也就是多個`worker同時工作,這也就達到了我們的目的。在Ubuntu 下安裝Redis比較簡單,使用下面的命令即可,該命令除了安裝 Redis外,也會好心地幫你安裝了redis-cli。
$sudo apt-get install redis-server
安裝完成後可以嘗試啟動一下Reids,檢查是否安裝成功。
$ redis-server
上面的命令會使用默認的設置啟動Redis服務,如果你看到下面漂亮啟動界面說明安裝成功了。
不過還沒完額,使用下面命令看看我們可以看到什麼
$ netstat -an | grep 6379
結果:
因為Redis默認使用的端口是6379,該命令可以查看6379端口監聽的ip ,可以看到 Redis默認綁定的是127.0.0.1,可以在/etc/redis/redis.conf中看到該設置。
Redis的默認配置綁定了127.0.0.1,注釋掉bind 127.0.0.1即可。然後重啟Redis。
$ sudo /etc/init.d/redis-server restart
再次執行netstat -an | grep 6379
可以看到改變了 ,Redis已經可以接受同一個局域網內的redis cli連接了
rq-dashboardrq-dashboard是一個監控rq執行狀況的python庫,它可以顯示當前有哪些Queue,每個Queue有多少Job,以及有多少Worker處於工作狀態,還顯示了失敗的Job。可以使用pip方便的安裝Dashboard.
$sudo pip install rq-dashboard
安裝成功後,使用下面的命令啟動rq-dashboard
$rq-dashboard -u "redus://192.168.0.107:6379"
其中-u參數是需要使用的Redis連接地址,啟動成功後可以看到下面的信息
可以看出Rq dashboard的版本信息,以及運行的地址端口,也就是我們可以通過浏覽器訪問,默認的端口是9181,IP地址是啟動rq-dashboard的機器ip,在同一局域網的電腦訪問http://192.168.0.107:9181,其中192.168.0.107是啟動rq-dashboard的電腦ip。
Rq-dashboard是一個很有用的工具,可以圖形化的監控rq的工作狀態,但是美中不足,不能控制worker的工作,不過相信應該很快就會支持這些功能了。
rq的使用參考官方文檔
下面關於Python的文章您也可能喜歡,不妨看看:
Python:在指定目錄下查找滿足條件的文件 http://www.linuxidc.com/Linux/2015-08/121283.htm
Python2.7.7源碼分析 http://www.linuxidc.com/Linux/2015-08/121168.htm
無需操作系統直接運行 Python 代碼 http://www.linuxidc.com/Linux/2015-05/117357.htm
CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm
在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm
Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm
Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡
更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2