Skip to content

Instantly share code, notes, and snippets.

@ganmacs
Last active November 9, 2018 09:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ganmacs/a10460268bd1c4ae02a761186ad04c1a to your computer and use it in GitHub Desktop.
Save ganmacs/a10460268bd1c4ae02a761186ad04c1a to your computer and use it in GitHub Desktop.
require 'logger'
require 'grpc'
require 'grpc/health/checker'
module RubyLogger
def logger
Logger.new(STDOUT, level: :debug)
end
end
GRPC.extend(RubyLogger)
stub = Grpc::Health::V1::Health::Stub.new('127.0.0.1:50051', :this_channel_is_insecure)
p stub.check(Grpc::Health::V1::HealthCheckRequest.new(service: 'hoge'))
require 'logger'
require 'pry'
require 'grpc'
require 'grpc/health/v1/health_services_pb'
require_relative 'my_server'
module RubyLogger
def logger
Logger.new(STDOUT, level: :debug)
end
end
GRPC.extend(RubyLogger)
health_checker = MyService.new
s = GRPC::RpcServer.new(pool_size: 1)
s.add_http2_port('127.0.0.1:50051', :this_port_is_insecure)
s.handle(health_checker)
finish = Queue.new
stop_server_thread = Thread.new do
reason = finish.pop
GRPC.logger.info("Stopping... #{reason}")
s.stop
end
# trap('INT') do
# GRPC.logger.info('Trapping SIGINT')
# finish.push(:int)
# end
# trap('TERM') do
# GRPC.logger.info('Trapping SIGTERM')
# finish.push(:term)
# end
trap(:USR2) {
Thread.new do
p 'load my_server'
load('./my_server.rb')
ms = MyService.new
state = s.instance_variable_get(:@running_state)
# could be race
begin
s.instance_variable_set(:@running_state, :not_started)
s.instance_eval do
@rpc_handlers.clear
@rpc_descs.clear
end
s.handle(ms)
ensure
s.instance_variable_set(:@running_state, state)
end
end.join
}
s.run_till_terminated
stop_server_thread.join
require 'grpc'
require 'grpc/health/v1/health_services_pb'
class MyService < Grpc::Health::V1::Health::Service
# overwrite
def check(req, _call)
puts "aaa"
Grpc::Health::V1::HealthCheckResponse.new(status: Grpc::Health::V1::HealthCheckResponse::ServingStatus::SERVING)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment