MasterTest / app.py
LucaR84's picture
Adding the sync and callling back logic
9726e3d
from fastapi import FastAPI, Request
import requests
import time
app = FastAPI()
def callback_sender(sender_url: str):
"""Callback function to periodically call registered senders"""
response_ok = True
try:
response = requests.get(sender_url, params={'callback': 'true', 'timestamp': time.time()})
print(f"Callback to {sender_url}: {response.status_code}")
except Exception as e:
print(f"Callback to {sender_url} failed: {e}")
response_ok = False
return response_ok
@app.get("/hc")
async def receive_hc(request: Request, timestamp: float, host_url: str):
response = False
# calling the sender back
if host_url:
print(f"Calling back: {host_url}")
response = callback_sender(host_url)
# Print received data
status = 'OK' if response else 'KO'
url = str(request.url)
original_url = url.split('?')[0]
print(f"URL: {original_url}")
print(f"Sender Host URL: {host_url}")
print(f"Timestamp: {timestamp}")
print(f"status: {status}")
print("-" * 40)
return {"status": status}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)