I have this python application, which will run every 5 seconds (when executed as python3 app.py) but not expecting the same output when dockerized.
Here's my app.py
import os
import threading
from pymongo import MongoClient
# get the values of the environment variables 
MONGODB_HOSTNAME = os.environ['MONGO_URI']
MONGODB_USERNAME = os.environ['MONGODB_USERNAME']
MONGODB_PASSWORD = os.environ['MONGODB_PASSWORD']
MONGODB_DATABASE = os.environ['MONGODB_LOGS_DATABASE']
MONGODB_COLLECTION_NAME = os.environ['MONGODB_COLLECTION_NAME']
client = MongoClient("mongodb://"+MONGODB_USERNAME+":"+MONGODB_PASSWORD+"@mongodb/admin")
def get_count():
    threading.Timer(5.0, get_count).start()
    records = get_records()
    print("Getting count...")
    # Check if last 10 records have 10 failed attempts
    response_codes = list(map(lambda x : x['ResponseCode'], records))
    
    codes = []
    count = 0
    for response in response_codes:
        codes.append(response)
        if (response == '200'):
            count = count+1
    
    return str(count)
def get_records():
    db = client[MONGODB_DATABASE]
    collection = db[MONGODB_COLLECTION_NAME]
    cursor = collection.find()
    item = {}
    data = []
    if cursor:
        for record in cursor:
            item = {'ResponseCode' : record['ResponseCode']}
            data.append(item)
    return data
get_count()
When I try it, the output is as below:
Getting count...
<after 5 seconds>
Getting count...
<after 5 seconds>
Getting count...
<after 5 seconds>
.
.
.
And here's the Dockerfile for the above app
FROM python:3.6.8-alpine3.9
LABEL MAINTAINER="Jananath Banuka banukajananathjayarathna@gmail.com"
ENV GROUP_ID=1000 \
    USER_ID=1000
WORKDIR /tmp/
ADD . /tmp/
RUN pip install -r requirements.txt
CMD ["python3", "app.py"]
When when I run and build and see the logs, I can only see the below output and nothing after that:
Getting count...
Can someone help me why it is only printing it once but not recurring?
PS: environment variables are passed in a docker-compose.yml
Thank you!
 
    