Python操作docker裡面的redis

2021-10-05 06:41:16 字數 2471 閱讀 6990

使用操作命令借助subprocess模組進行操作

#encoding:utf-8

import subprocess

defcmd

(command)

: subp = subprocess.popen(command,shell=

true

,stdout=subprocess.pipe,stderr=subprocess.pipe,encoding=

"utf-8"

) subp.wait(2)

if subp.poll()==

0:return subp.communicate(

)else

:return

none

獲取redis鍵所對應的值

def

get_output

(command)

: subp = subprocess.getoutput(command)

return subp

flask框架獲取docker裡面redis中的鍵值對

@ui_case_set.route(

"/get_code"

, methods=

["get"])

@allow_cross_domain

defget_code()

: set_id = request.values.get(

"id")if

not set_id:

return response_fail(msg=

"缺少引數用例集id"

) key_name =

"key"

+str

(set_id)

value_name = get_output(

"docker exec redis-cli get "

.format

(dockerconfig.container_redis_name, key_name)

)if value_name:

return response_fail(msg=

"此測試集正被{}編輯!"

.format

("金剛"))

else

:return response_success(msg=

"可以進行編輯!"

)

flask框架增加及刪除docker裡面redis中的鍵值對

@ui_case_set.route(

"/time_limit"

, methods=

["post"])

@allow_cross_domain

defset_time()

:# lock:為1:上鎖, 為0時: 解鎖

set_id = request.json.get(

"id"

) locak = request.json.get(

"lock"

)# if not all([set_id, locak]):

# return response_fail(msg="引數不足")

key_name =

"key"

+str

(set_id)

if locak ==1:

value_name = time.strftime(

"%y-%m-%d %h:%m:%s"

, time.localtime(time.time())

) cmd(

"docker exec redis-cli setex 300 ''"

.format

(dockerconfig.container_redis_name, key_name, value_name)

)return response_success(content=

, msg=

"測試集{}上鎖成功"

.format

(set_id)

)else

: cmd(

"docker exec redis-cli del "

.format

(dockerconfig.container_redis_name, key_name)

)return response_success(content=

, msg=

"測試集{}解鎖成功"

.format

(set_id)

)

注意點: 使用操作命令時不要帶 「-it",如(docker exec -it ui_redis(docker容器名稱) redis-cli set key vale) 否則介面在前台執行方式下是可以正常訪問的,在python程式後台執行下執行失敗。因為 指定 -it 是需要開啟乙個互動模式的終端。

Python 裡的執行緒安全 原子操作

通俗易懂 說說 python 裡的執行緒安全 原子操作 在併發程式設計時,如果多個執行緒訪問同一資源,我們需要保證訪問的時候不會產生衝突,資料修改不會發生錯誤,這就是我們常說的 執行緒安全 那什麼情況下,訪問資料時是安全的?什麼情況下,訪問資料是不安全的?如何知道你的 是否執行緒安全?要如何訪問資料...

docker 容器裡安裝mysql

ubuntu官方映象是精簡的ubuntu系統,很多軟體和庫沒有安裝,所以直接安裝mysql的話依賴較多,建議直接從原始碼編譯安裝mysql 先啟動乙個容器,建議可以建立乙個包含常用工具的便於自己使用的基本映象,比如 包含vim net tools 新增阿里雲映象 安裝編譯環境 需要gcc cmake...

Docker 四 Docker 映象操作

docker 映象是由檔案系統疊加而成 是一種檔案的儲存形式 最底端是乙個檔案引導系統,即 bootfs,這很像典型的 linux unix 的引導檔案系統。docker 使用者幾乎永遠不會和引導系統有什麼互動。實際上,當乙個容器啟動後,它將會被移動到記憶體中,而引導檔案系統則會被解除安裝,以留出更...