0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python の gRPC で Redis のデータを削除 (Delete)

Last updated at Posted at 2020-02-08

設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。

設定ファイル

redis_delete.proto

syntax = "proto3";

package redis_delete;

service Greeter {
	rpc RedisDelete (RedisRequest) returns (RedisReply) {}
}

message RedisRequest {
	string key = 1;
}

message RedisReply {
	string key = 1;
}

サーバープログラム

redis_delete_server.py
#! /usr/bin/python
#
#	redis_delete_server.py
#
#					Feb/08/2020
# --------------------------------------------------------------
import sys
import json
import redis
from concurrent import futures
import logging
import	datetime

import grpc

import redis_delete_pb2
import redis_delete_pb2_grpc

# --------------------------------------------------------------
def redis_delete_proc(key_in):
	rr = redis.Redis(host='localhost', port=6379, db=0)
#
	rr.delete(key_in)
#
# --------------------------------------------------------------
class Greeter(redis_delete_pb2_grpc.GreeterServicer):

	def RedisDelete(self, request, context):
		sys.stderr.write("*** RedisRead ***\n")
		sys.stderr.write("*** key = %s ***\n" % request.key)
		redis_delete_proc(request.key)
		return redis_delete_pb2.RedisReply(key=request.key)

# --------------------------------------------------------------
def serve():
	server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
	redis_delete_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server)
	server.add_insecure_port('[::]:50051')
	server.start()
	server.wait_for_termination()

# --------------------------------------------------------------
if __name__ == '__main__':
	logging.basicConfig()
	serve()
# --------------------------------------------------------------

クライアントプログラム

redis_delete_client.py
#! /usr/bin/python
#
#	redis_delete_client.py
#
#					Feb/08/2020
#
# --------------------------------------------------------------
from __future__ import print_function
import logging
import json
import grpc
import sys

import redis_delete_pb2
import redis_delete_pb2_grpc

# --------------------------------------------------------------
def run():
	key_in = sys.argv[1]
#
	with grpc.insecure_channel('localhost:50051') as channel:
		stub = redis_delete_pb2_grpc.GreeterStub(channel)
		response = stub.RedisDelete(redis_delete_pb2.RedisRequest \
			(key=key_in))
		print("Greeter client received aa: " + response.key)
#
# --------------------------------------------------------------
if __name__ == '__main__':
	logging.basicConfig()
	run()
# --------------------------------------------------------------

gRPC のコードを作成します。

python -m grpc_tools.protoc -I. \
	--python_out=. \
	--grpc_python_out=. \
	./redis_delete.proto

サーバープログラムの起動

./redis_delete_server.py

クライアントプログラムの実行

$ ./redis_delete_client.py t0934
Greeter client received aa: t0934
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?