anuj-exe commited on
Commit
37c8cb5
·
verified ·
1 Parent(s): 7269d89

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +8 -37
main.py CHANGED
@@ -1,6 +1,5 @@
1
- from fastapi import FastAPI, HTTPException
2
  from fastapi.responses import JSONResponse
3
- import asyncio
4
  import time
5
  import psutil
6
  import os
@@ -11,12 +10,8 @@ process = psutil.Process(os.getpid())
11
  last_cpu_times = process.cpu_times()
12
  last_time = time.time()
13
 
14
- # Queue settings
15
- MAX_QUEUE_SIZE = 100 # Max number of requests waiting in the queue
16
- NUM_WORKERS = 20 # Number of concurrent workers
17
- request_queue = asyncio.Queue(MAX_QUEUE_SIZE)
18
-
19
  def get_cpu_percent():
 
20
  global last_cpu_times, last_time
21
  now = time.time()
22
  times = process.cpu_times()
@@ -24,43 +19,19 @@ def get_cpu_percent():
24
  cpu_used = (times.user - last_cpu_times.user) + (times.system - last_cpu_times.system)
25
  last_cpu_times = times
26
  last_time = now
 
27
  return round((cpu_used / elapsed) * 100, 1)
28
 
29
  def simulate_work():
30
- total = 0
31
- for i in range(500000):
32
- total += i
33
- return total
34
-
35
- async def worker():
36
- while True:
37
- fut = await request_queue.get()
38
- try:
39
- result = simulate_work()
40
- fut.set_result({"ok": True, "time": int(time.time() * 1000)})
41
- except Exception as e:
42
- fut.set_exception(e)
43
- finally:
44
- request_queue.task_done()
45
 
46
- # Start worker tasks on startup
47
- @app.on_event("startup")
48
- async def startup_event():
49
- for _ in range(NUM_WORKERS):
50
- asyncio.create_task(worker())
51
 
52
  @app.get("/")
53
  async def root():
54
- if request_queue.full():
55
- # Queue is full, reject request
56
- raise HTTPException(status_code=429, detail="Server busy, try again later")
57
-
58
- # Create a future to get the result from the worker
59
- loop = asyncio.get_event_loop()
60
- fut = loop.create_future()
61
- await request_queue.put(fut)
62
- result = await fut
63
- return result
64
 
65
  @app.get("/metrics")
66
  async def metrics():
 
1
+ from fastapi import FastAPI
2
  from fastapi.responses import JSONResponse
 
3
  import time
4
  import psutil
5
  import os
 
10
  last_cpu_times = process.cpu_times()
11
  last_time = time.time()
12
 
 
 
 
 
 
13
  def get_cpu_percent():
14
+
15
  global last_cpu_times, last_time
16
  now = time.time()
17
  times = process.cpu_times()
 
19
  cpu_used = (times.user - last_cpu_times.user) + (times.system - last_cpu_times.system)
20
  last_cpu_times = times
21
  last_time = now
22
+
23
  return round((cpu_used / elapsed) * 100, 1)
24
 
25
  def simulate_work():
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
+ start = time.time()
28
+ while (time.time() - start) < 0.005:
29
+ pass
 
 
30
 
31
  @app.get("/")
32
  async def root():
33
+ simulate_work()
34
+ return {"ok": True, "time": int(time.time() * 1000)}
 
 
 
 
 
 
 
 
35
 
36
  @app.get("/metrics")
37
  async def metrics():