From 3a9500349363d9bdda5deb4026e5c56f0076092d Mon Sep 17 00:00:00 2001 From: Josh Burman Date: Mon, 1 Nov 2021 20:57:20 +0000 Subject: [PATCH] use daemonize and attach to foreground --- .docker-compose/Dockerfile | 4 +-- Dockerfile | 4 +-- app/main.py | 56 +++++++++++++------------------------- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/.docker-compose/Dockerfile b/.docker-compose/Dockerfile index 1c70967..319a6ea 100644 --- a/.docker-compose/Dockerfile +++ b/.docker-compose/Dockerfile @@ -11,11 +11,11 @@ RUN cd Cbc-2.9.8 && \ make install RUN python -m pip install pydantic RUN python -m pip install pySqsListener +RUN python -m pip install daemonize # Bundle app source COPY . /app WORKDIR /app/app -# CMD [ "python", "main.py" ] -CMD tail -f /dev/null +CMD [ "python", "main.py" ] diff --git a/Dockerfile b/Dockerfile index 1c70967..319a6ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,11 +11,11 @@ RUN cd Cbc-2.9.8 && \ make install RUN python -m pip install pydantic RUN python -m pip install pySqsListener +RUN python -m pip install daemonize # Bundle app source COPY . /app WORKDIR /app/app -# CMD [ "python", "main.py" ] -CMD tail -f /dev/null +CMD [ "python", "main.py" ] diff --git a/app/main.py b/app/main.py index 8d381e2..d595404 100644 --- a/app/main.py +++ b/app/main.py @@ -1,14 +1,10 @@ -import os -import sys -import json -import time +import os, sys, json, time from services.loft_service import LoftService from helpers import aws_helper + +from daemonize import Daemonize from sqs_listener import SqsListener -from sqs_listener.daemon import Daemon - - class ServiceListener(SqsListener): def handle_message(self, body, attributes, messages_attributes): @@ -18,34 +14,20 @@ class ServiceListener(SqsListener): service.process() # log the things -class ServiceDaemon(Daemon): - def run(self): - print("Starting Solver Service (v0.3.2)...") - print("Initializing listener") - listener = ServiceListener( - 'measure-development-solver-ingest', - region_name=os.environ['SOLVER_AWS_REGION'], - aws_access_key=os.environ['SOLVER_AWS_ACCESS_KEY_ID'], - aws_secret_key=os.environ['SOLVER_AWS_SECRET_ACCESS_KEY'], - queue_url=os.environ['SOLVER_SQS_INGEST_QUEUE'] - ) - listener.listen() +def main(): + print("Starting Solver Service (v0.3.2)...") + print("Initializing listener") + listener = ServiceListener( + 'measure-development-solver-ingest', + region_name=os.environ['SOLVER_AWS_REGION'], + aws_access_key=os.environ['SOLVER_AWS_ACCESS_KEY_ID'], + aws_secret_key=os.environ['SOLVER_AWS_SECRET_ACCESS_KEY'], + queue_url=os.environ['SOLVER_SQS_INGEST_QUEUE'] + ) + listener.listen() -if __name__ == "__main__": - daemon = ServiceDaemon('/var/run/sqs_daemon.pid',stdout='/app/logs/stdout', stderr='/app/logs/stderr', stdin='/app/logs/stdin') - if len(sys.argv) == 2: - if 'start' == sys.argv[1]: - print("Starting listener daemon") - daemon.start() - elif 'stop' == sys.argv[1]: - print("Attempting to stop the daemon") - daemon.stop() - elif 'restart' == sys.argv[1]: - daemon.restart() - else: - print("Unknown command") - sys.exit(2) - sys.exit(0) - else: - print("usage: %s start|stop|restart" % sys.argv[0]) - sys.exit(2) +if __name__ == '__main__': + myname=os.path.basename(sys.argv[0]) + pidfile='/tmp/%s' % myname # any name + daemon = Daemonize(app=myname,pid=pidfile, action=main, foreground=True) + daemon.start()