ak0601 commited on
Commit
b72e388
1 Parent(s): ef888e9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -16
app.py CHANGED
@@ -18,7 +18,7 @@ from pydantic import BaseModel
18
  from vonage import Client, Sms
19
  from datetime import datetime, timedelta
20
  import schedule
21
- import threading
22
  import time
23
  import vonage
24
 
@@ -31,7 +31,7 @@ class MessageRequest(BaseModel):
31
  text: str
32
  scheduled_time: str # HH:MM format
33
 
34
- def send_scheduled_sms(message_request: MessageRequest):
35
  try:
36
  response = sms.send_message(
37
  {
@@ -44,28 +44,29 @@ def send_scheduled_sms(message_request: MessageRequest):
44
  except Exception as e:
45
  print(f"Failed to send SMS to {message_request.phone_num}: {e}")
46
 
47
- def schedule_daily_sms(message_request: MessageRequest):
 
48
  scheduled_time = datetime.strptime(message_request.scheduled_time, "%H:%M")
49
- schedule.every().day.at(message_request.scheduled_time).do(send_scheduled_sms, message_request)
50
- print(f"Scheduled daily SMS for {message_request.phone_num} at {scheduled_time}")
 
 
 
 
 
 
51
 
52
- @app.post("/send_daily_sms")
53
- async def send_daily_sms_endpoint(message_request: MessageRequest):
54
- schedule_daily_sms(message_request)
55
- return {"message": f"Daily SMS scheduled for {message_request.phone_num} at {message_request.scheduled_time}"}
56
 
57
- def run_scheduler():
58
- while True:
59
- schedule.run_pending()
60
- time.sleep(1)
 
61
 
62
  if __name__ == "__main__":
63
- scheduler_thread = threading.Thread(target=schedule_daily_sms)
64
- scheduler_thread.start()
65
  import uvicorn
66
 
67
  uvicorn.run(app, host="127.0.0.1", port=8000)
68
 
69
 
70
-
71
  # uvicorn test:app --reload
 
18
  from vonage import Client, Sms
19
  from datetime import datetime, timedelta
20
  import schedule
21
+ import asyncio
22
  import time
23
  import vonage
24
 
 
31
  text: str
32
  scheduled_time: str # HH:MM format
33
 
34
+ async def send_scheduled_sms(message_request: MessageRequest):
35
  try:
36
  response = sms.send_message(
37
  {
 
44
  except Exception as e:
45
  print(f"Failed to send SMS to {message_request.phone_num}: {e}")
46
 
47
+
48
+ async def schedule_sms(message_request: MessageRequest):
49
  scheduled_time = datetime.strptime(message_request.scheduled_time, "%H:%M")
50
+ now = datetime.now()
51
+ delta = scheduled_time - now
52
+ seconds_until_scheduled_time = delta.total_seconds()
53
+
54
+ if seconds_until_scheduled_time > 0:
55
+ print(f"Scheduling SMS for {message_request.phone_num} at {scheduled_time}")
56
+ await asyncio.sleep(seconds_until_scheduled_time)
57
+ await send_scheduled_sms(message_request)
58
 
 
 
 
 
59
 
60
+ @app.post("/send_scheduled_sms")
61
+ async def send_scheduled_sms_endpoint(message_request: MessageRequest):
62
+ asyncio.create_task(schedule_sms(message_request))
63
+ return {"message": f"SMS scheduled for {message_request.phone_num} at {message_request.scheduled_time}"}
64
+
65
 
66
  if __name__ == "__main__":
 
 
67
  import uvicorn
68
 
69
  uvicorn.run(app, host="127.0.0.1", port=8000)
70
 
71
 
 
72
  # uvicorn test:app --reload