Skip to content
File

Blob: samples/python-benchmark/worker.py

python48 lines
1import json
2 
3from js import Response
4from workers import WorkerEntrypoint
5 
6DEFAULT_ITERATIONS = 500
7 
8 
9def json_loop(n: int) -> int:
10 count = 0
11 for i in range(n):
12 obj = {
13 "id": i,
14 "name": "item-" + str(i),
15 "values": [i, i * 2, i * 3],
16 "nested": {"flag": (i % 2 == 0), "index": i},
17 }
18 s = json.dumps(obj)
19 parsed = json.loads(s)
20 count += parsed["id"]
21 return count
22 
23 
24class Default(WorkerEntrypoint):
25 async def fetch(self, request):
26 iters = DEFAULT_ITERATIONS
27 
28 try:
29 body_text = await request.text()
30 if body_text:
31 data = json.loads(body_text)
32 iters = int(data.get("iters", iters))
33 except Exception:
34 iters = DEFAULT_ITERATIONS
35 
36 result = json_loop(iters)
37 
38 return Response.new(
39 json.dumps({"result": result, "iters": iters}),
40 {"content-type": "application/json"},
41 )
42 
43 
44def test():
45 iters = DEFAULT_ITERATIONS
46 result = json_loop(iters)
47 print(f"Ran json_loop({iters}) -> {result}")