def main(): service_name = 'SkeletonsDetector.Detect' op = load_options() sd = RPCSkeletonsDetector(op) log = Logger(name=service_name) channel = Channel(op.broker_uri) log.info('Connected to broker {}', op.broker_uri) provider = ServiceProvider(channel) provider.add_interceptor(LogInterceptor()) max_batch_size = max(100, op.zipkin_batch_size) exporter = ZipkinExporter( service_name=service_name, host_name=op.zipkin_host, port=op.zipkin_port, transport=BackgroundThreadTransport(max_batch_size=max_batch_size), ) tracing = TracingInterceptor(exporter=exporter) provider.delegate(topic='SkeletonsDetector.Detect', function=partial(RPCSkeletonsDetector.detect, sd), request_type=Image, reply_type=ObjectAnnotations) provider.run()
def main(): service_name = 'FaceDetector.Detect' log = Logger(name=service_name) op = load_options() detector = RPCFaceDetector(op.model) channel = Channel(op.broker_uri) log.info('Connected to broker {}', op.broker_uri) provider = ServiceProvider(channel) provider.add_interceptor(LogInterceptor()) exporter = create_exporter(service_name=service_name, uri=op.zipkin_uri) tracing = TracingInterceptor(exporter=exporter) provider.add_interceptor(tracing) provider.delegate(topic='FaceDetector.Detect', function=detector.detect, request_type=Image, reply_type=ObjectAnnotations) provider.run()
from is_wire.rpc import ServiceProvider, LogInterceptor from is_msgs.image_pb2 import Image, ObjectAnnotations, ObjectAnnotation from utils import load_options import time from random import randint mean_time = 100 # milliseconds var_time = 20 def detect(image, ctx): # simulate error time.sleep(randint(mean_time - var_time, mean_time + var_time) / 1000.0) reply = ObjectAnnotations(frame_id=randint(0, 4), objects=[ObjectAnnotation()] * randint(1, 3)) return reply options = load_options(print_options=False) channel = Channel(options.broker_uri) provider = ServiceProvider(channel) provider.add_interceptor(LogInterceptor()) provider.delegate(topic='Skeletons.Detect', function=detect, request_type=Image, reply_type=ObjectAnnotations) provider.run()
from is_wire.core import Channel from is_wire.rpc import ServiceProvider from is_wire.rpc.log_interceptor import LogInterceptor from is_msgs.common_pb2 import Pose, Position mean_svc_time_ms = 100 var_src_time_ms = 20 min_svc_time_ms = mean_svc_time_ms - var_src_time_ms max_svc_time_ms = mean_svc_time_ms + var_src_time_ms channel = Channel('amqp://localhost:5672') service_provider = ServiceProvider(channel) service_provider.add_interceptor(LogInterceptor()) def service(pose, ctx): delay = randint(min_svc_time_ms, max_svc_time_ms) / 1000.0 time.sleep(delay) return pose.position service_provider.delegate(topic="GetPosition", function=service, request_type=Pose, reply_type=Position) service_provider.run()