-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun.py
More file actions
48 lines (41 loc) · 1.12 KB
/
Copy pathrun.py
File metadata and controls
48 lines (41 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import asyncio
import logging
import signal
import sys
from pythonjsonlogger import jsonlogger
signal.signal(signal.SIGTERM, lambda *_: sys.exit(0))
handler = logging.StreamHandler()
handler.setFormatter(jsonlogger.JsonFormatter())
logging.root.setLevel(logging.INFO)
logging.root.addHandler(handler)
logger = logging.getLogger(__name__)
async def run_all():
producer = await asyncio.create_subprocess_exec(
"uv",
"run",
"services/ingestion/main.py",
stdout=sys.stdout,
stderr=sys.stderr,
)
consumer = await asyncio.create_subprocess_exec(
"uv",
"run",
"services/consumer/main.py",
stdout=sys.stdout,
stderr=sys.stderr,
)
api = await asyncio.create_subprocess_exec(
"uv",
"run",
"uvicorn",
"services.api.main:app",
"--reload",
stdout=sys.stdout,
stderr=sys.stderr,
)
await asyncio.gather(producer.wait(), consumer.wait(), api.wait())
if __name__ == "__main__":
try:
asyncio.run(run_all())
except KeyboardInterrupt:
logger.info("Shutting down...")