TahaFawzyElshrif commited on
Commit
a1b8590
·
1 Parent(s): 9e6d645

modified processing to use queue

Browse files
Files changed (2) hide show
  1. Dockerfile +3 -0
  2. app.py +35 -2
Dockerfile CHANGED
@@ -13,4 +13,7 @@ RUN pip install --no-cache-dir --upgrade pip && \
13
 
14
  COPY . .
15
 
 
 
 
16
  CMD ["python", "app.py"]
 
13
 
14
  COPY . .
15
 
16
+ #CMD ["python", "Consumer.py"] won't work. reliability?
17
+ CMD ["python", "Consumer.py"]
18
+
19
  CMD ["python", "app.py"]
app.py CHANGED
@@ -24,9 +24,39 @@ class RequestModel(BaseModel):
24
  def read_root():
25
  return {"message": "Hello From CodeBuddyAI!"}
26
 
 
 
 
 
 
27
 
28
- @app.post("/call/")
29
- def call(request: RequestModel):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  # fill with last state
31
  try:
32
  state = json.loads(request.last_state)
@@ -46,6 +76,9 @@ def call(request: RequestModel):
46
  return {"Data": answer}
47
 
48
 
 
 
 
49
 
50
  if __name__ == "__main__":
51
  uvicorn.run(app, host="0.0.0.0", port=7860)
 
24
  def read_root():
25
  return {"message": "Hello From CodeBuddyAI!"}
26
 
27
+ ######################
28
+ # Producer
29
+ import pika
30
+ RABBITMQ_URL = os.environ["RABBITMQ_URL"]
31
+ QUEUE_NAME = os.environ["QUEUE_NAME"]
32
 
33
+ def get_connection():
34
+ params = pika.URLParameters(RABBITMQ_URL)
35
+ return pika.BlockingConnection(params)
36
+
37
+ connection = get_connection()
38
+ def send_message(data: dict):
39
+ connection = get_connection()
40
+ channel = connection.channel()
41
+
42
+ channel.queue_declare(queue=QUEUE_NAME, durable=True)
43
+
44
+ message = str(data)
45
+
46
+ channel.basic_publish(
47
+ exchange='',
48
+ routing_key=QUEUE_NAME,
49
+ body=message,
50
+ properties=pika.BasicProperties(
51
+ delivery_mode=2, # make message persistent
52
+ )
53
+ )
54
+
55
+ connection.close()
56
+
57
+ return {"status": "sent", "data": data}
58
+ ######################
59
+ def old_call(request: RequestModel):
60
  # fill with last state
61
  try:
62
  state = json.loads(request.last_state)
 
76
  return {"Data": answer}
77
 
78
 
79
+ @app.post("/call/")
80
+ def call(request: RequestModel):
81
+ return send_message(request.model_dump())
82
 
83
  if __name__ == "__main__":
84
  uvicorn.run(app, host="0.0.0.0", port=7860)