From e865a5aa5324d548435ab74192578e6bb044dce2 Mon Sep 17 00:00:00 2001 From: Kalyana Chadalavada Date: Wed, 6 Mar 2019 20:19:03 -0800 Subject: [PATCH] Moved Profiler init to a function --- src/emailservice/Dockerfile | 8 +++++-- src/emailservice/email_server.py | 21 +++++++++++++----- .../recommendation_server.py | 22 ++++++++++++++----- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/src/emailservice/Dockerfile b/src/emailservice/Dockerfile index c7169d5..4c7f225 100644 --- a/src/emailservice/Dockerfile +++ b/src/emailservice/Dockerfile @@ -1,19 +1,23 @@ FROM python:3-slim as base FROM base as builder -FROM base as final RUN apt-get -qq update \ && apt-get install -y --no-install-recommends \ - wget g++ + g++ # get packages COPY requirements.txt . RUN pip install -r requirements.txt +FROM base as final # Enable unbuffered logging ENV PYTHONUNBUFFERED=1 +RUN apt-get -qq update \ + && apt-get install -y --no-install-recommends \ + wget + # Download the grpc health probe RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \ wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ diff --git a/src/emailservice/email_server.py b/src/emailservice/email_server.py index 536a162..7a2da0b 100644 --- a/src/emailservice/email_server.py +++ b/src/emailservice/email_server.py @@ -144,13 +144,24 @@ def start(dummy_mode): except KeyboardInterrupt: server.stop(0) +def InitProfiler(): + for retry in range(3): + try: + googlecloudprofiler.start(service='email_server', service_version='1.0.0', verbose=0) + logger.info("Successfully started Stackdriver Profiler.") + return + except (BaseException) as exc: + logger.info("Unable to start Stackdriver Profiler Python agent in email_server.py.\n" + str(exc)) + if (retry < 3): + logger.info("Sleeping %d to retry initializing Stackdriver Profiler"%(retry*10)) + time.sleep (retry *10) + else: + logger.warning("could not initialize stackdriver profiler after retrying, giving up") + return if __name__ == '__main__': logger.info('starting the email service in dummy mode.') - # Start the Stackdriver Profiler Python agent - try: - googlecloudprofiler.start(service='email_server', service_version='1.0.1', verbose=0) - except (ValueError, NotImplementedError) as exc: - logger.info("Unable to start Stackdriver Profiler Python agent in email_server.py.\n" + str(exc)) + # Start the Stackdriver Profiler Python agent + InitProfiler() start(dummy_mode = True) diff --git a/src/recommendationservice/recommendation_server.py b/src/recommendationservice/recommendation_server.py index 66e161a..7ecb3b9 100644 --- a/src/recommendationservice/recommendation_server.py +++ b/src/recommendationservice/recommendation_server.py @@ -37,6 +37,21 @@ from logger import getJSONLogger logger = getJSONLogger('recommendationservice-server') +def InitProfiler(): + for retry in xrange(3): + try: + googlecloudprofiler.start(service='recommendation_server', service_version='1.0.0', verbose=0) + logger.info("Successfully started Stackdriver Profiler.") + return + except (BaseException) as exc: + logger.info("Unable to start Stackdriver Profiler Python agent in recommendation_server.py.\n" + str(exc)) + if (retry < 3): + logger.info("Sleeping %d to retry initializing Stackdriver Profiler"%(retry*10)) + time.sleep (retry*10) + else: + logger.warning("Could not initialize Stackdriver Profiler after retrying, giving up") + return + class RecommendationService(demo_pb2_grpc.RecommendationServiceServicer): def ListRecommendations(self, request, context): max_responses = 5 @@ -65,12 +80,7 @@ if __name__ == "__main__": logger.info("initializing recommendationservice") # Start the Stackdriver Profiler Python agent - try: - googlecloudprofiler.start(service='recommendation_server', service_version='1.0.0', verbose=0) - except (ValueError, NotImplementedError) as exc: - logger.info("Unable to start Stackdriver Profiler Python agent in recommendation_server.py.\n" + - str(exc)) - + InitProfiler() try: sampler = always_on.AlwaysOnSampler()