Skip to main content

counter-py

from os import environ
import logging
import requests

logging.basicConfig(level="INFO")
logger = logging.getLogger(__name__)

rollup_server = environ["ROLLUP_HTTP_SERVER_URL"]
logger.info(f"HTTP rollup_server url is {rollup_server}")

class Counter:
def __init__(self):
self.value = 0

def increment(self):
self.value += 1
return self.value

def get(self):
return self.value

counter = Counter()

def handle_advance(data):
logger.info(f"Received advance request data {data}")
new_val = counter.increment()
logger.info(f"Counter increment requested, new count value: {new_val}")
return "accept"


def handle_inspect(data):
logger.info(f"Received inspect request data {data}")
logger.info(f"Current counter value: {counter.get()}")
return "accept"


handlers = {
"advance_state": handle_advance,
"inspect_state": handle_inspect,
}

finish = {"status": "accept"}

while True:
logger.info("Sending finish")
response = requests.post(rollup_server + "/finish", json=finish)
logger.info(f"Received finish status {response.status_code}")
if response.status_code == 202:
logger.info("No pending rollup request, trying again")
else:
rollup_request = response.json()
data = rollup_request["data"]
handler = handlers[rollup_request["request_type"]]
finish["status"] = handler(rollup_request["data"])

We use cookies to ensure that we give you the best experience on our website. By using the website, you agree to the use of cookies.