如果只需要執行zookeeper四字命令,不需要zkclient,簡單的socket鏈結即可。
基本思路:
建立socket鏈結;
傳送四字命令;
接收返回資訊;
解析返回資訊。
**:
import socket
""" by liuhailong2008#foxmail.com
"""def multi_line_with_split(data, split_char):
lines = data.split('\n')
ret = {}
for line in lines:
if len(line) == 0:
continue
item = line.split(split_char)
if len(item) > 1:
ret[item[0]] = item[1]
return ret
def multi_line_with_equal_split(data):
return multi_line_with_split(data, '=')
def multi_line_with_tab_split(data):
return multi_line_with_split(data, '\t')
def multi_line_with_colon_split(data):
return multi_line_with_split(data, ':')
def single_line(data):
return
response_parser_repository =
def get_response_parser(four_word_command):
return response_parser_repository.get(four_word_command, none)
def talk_to_zookeeper(four_word_command, host='127.0.0.1', port=2181, timeout=1):
conn = socket.socket()
conn.settimeout(timeout)
conn.connect((host,port))
conn.send(four_word_command)
response_data = conn.recv(2048)
conn.close()
# print response_data
parser = get_response_parser(four_word_command)
if parser is none:
return response_data
return parser(response_data)
if __name__ == '__main__':
print 'ruok: %s ' % talk_to_zookeeper('ruok')
print 'conf: %s ' % talk_to_zookeeper('conf')
print 'envi: %s ' % talk_to_zookeeper('envi')
print 'srvr: %s ' % talk_to_zookeeper('srvr')
print 'mntr: %s ' % talk_to_zookeeper('mntr')
**輸出:
ruok:
conf:
envi:
srvr:
使用notepad 執行python
參考部落格 儘管有pycharm和spyder這樣的ide可以編寫python程式,但是它們都開啟慢,耗資源,ulipad雖然也很小巧,但是覺得不如notepad 用著順手,於是就想用notepad 配置一下。開啟notepad 在選單欄單擊 執行 選單,在下拉列表中選擇 執行 接著會彈出這個視窗 ...
使用python執行shell指令碼
這裡介紹一下python執行shell命令的四種方法 1 os模組中的os.system 這個函式來執行shell命令 os.system ls anaconda ks.cfg install.log install.log.syslog send sms service.py sms.py 0注,...
python執行函式 python怎麼執行函式
python 函式定義及呼叫 1 什麼是函式?在程式中,函式就是具備某一功能的工具,事先將工具準備好即函式的定義 遇到應用場景拿來就用即函式的呼叫 函式必須遵循先定義後呼叫的原則 2 為什麼要用函式 不用函式的問題是 程式冗長 程式擴充套件性查 程式的可讀性 3 如何用函式del 函式名 引數1,引...