Pythonはどうやってdocker redisを操作しますか?


操作コマンドを使ってsubprocessモジュールを使って操作します。

#encoding:utf-8
import subprocess
def cmd(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
flashkフレームはdockerの中のredisのキーを取得します。

@ui_case_set.route("/get_code", methods=["GET"])
@allow_cross_domain
def get_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 {0} redis-cli get {1}".format(DockerConfig.container_redis_name, key_name))
  if value_name:
    return response_fail(msg="      {}  !".format("  "))
  else:
    return response_success(msg="      !")
flashkフレームの追加とdockerの中のredisのキーの値を削除します。

@ui_case_set.route("/time_limit", methods=["POST"])
@allow_cross_domain
def set_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 {0} redis-cli setex {1} 300 '{2}'".format(DockerConfig.container_redis_name, key_name, value_name))
    return response_success(content={"lock_status": 1}, msg="   {}    ".format(set_id))
  else:
    cmd("docker exec {0} redis-cli del {1}".format(DockerConfig.container_redis_name, key_name))
    return response_success(content={"lock_status": 0}, msg="   {}    ".format(set_id))
注意点:操作コマンドを使う時は「-it」を持たないでください。redis(docker容器名)redis-cli set key valeでないと、インターフェースはフロントで正常にアクセスできます。pythonプログラムのバックグラウンドで実行に失敗しました。指定-itはインタラクティブモードを開く必要がある端末です。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。