使用操作命令借助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 使用者幾乎永遠不會和引導系統有什麼互動。實際上,當乙個容器啟動後,它將會被移動到記憶體中,而引導檔案系統則會被解除安裝,以留出更...