Skip to content

Commit

Permalink
refactor scheduler: every 5 min triggers task !
Browse files Browse the repository at this point in the history
  • Loading branch information
fjpacheco committed Apr 29, 2024
1 parent 81986e1 commit 809c1a7
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 17 deletions.
5 changes: 4 additions & 1 deletion app/clock.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ async def tick():
logger.info('Starting scheduler. Interval %s' % INTERVAL_SCHEDULE_SECS)

scheduler = AsyncIOScheduler()

scheduler.add_job(tick,
'interval', seconds=INTERVAL_SCHEDULE_SECS)
'cron',
minute='0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55',
second='0')
scheduler.start()

redis_url = os.environ.get('REDIS_URL')
Expand Down
10 changes: 5 additions & 5 deletions app/docker/tablas.sql
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ CREATE INDEX idx_alarms_datetime ON users_service.alarms(datetime);

INSERT INTO
users_service.alarms (id_user, datetime, content)
VALUES (1, '2024-04-29 03:22:00-03', 'Wake up 1!'),
(2, '2024-04-29 03:22:00-03', 'Wake up 2!'),
(3, '2024-04-29 03:29:00-03', 'Wake up 3!'),
(4, '2024-04-29 03:29:00-03', 'Wake up 4!');
VALUES (1, '2024-04-29 03:10:00-03', 'Wake up 1!'),
(2, '2024-04-29 03:10:00-03', 'Wake up 2!'),
(3, '2024-04-29 03:20:00-03', 'Wake up 3!'),
(4, '2024-04-29 03:20:00-03', 'Wake up 4!');

-- SELECT users_service.alarms.content, users_service.users.device_token
-- SELECT users_service.alarms.id, users_service.alarms.content, users_service.users.device_token
-- FROM users_service.alarms
-- INNER JOIN users_service.users ON users_service.alarms.id_user = users_service.users.id
-- WHERE users_service.alarms.datetime = '2021-06-01 11:01:00';`
5 changes: 0 additions & 5 deletions app/repository/Users.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,3 @@ def get_users_to_notify(self,
.filter(Alarm.datetime == date_time)
result = query.all()
return result

@withSQLExceptionsHandle()
def delete_alarms(self, ids: list[int]):
self.session.query(Alarm).filter(Alarm.id.in_(ids)).delete()
self.session.commit()
6 changes: 0 additions & 6 deletions app/worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,8 @@ async def alarm_manager(ctx: Worker, date_time: datetime):
logger.debug(f"No alarms to notify at {date_time}")
return
tasks = []
ids_alarm_to_delete = []
logger.info(f"Found {len(result)} alarms to notify at {date_time}")
for (id, content, device_token) in result:
ids_alarm_to_delete.append(id)

if device_token is None:
logger.debug(f"Alarm with id {id} has no device_token. "
f"Skipping...")
Expand All @@ -66,9 +63,6 @@ async def alarm_manager(ctx: Worker, date_time: datetime):
date_time))
tasks.append(task)

logger.debug(f"While tasks are running, deleting "
f"{len(ids_alarm_to_delete)} alarms...")
user_repository.delete_alarms(ids_alarm_to_delete)
logger.debug("Wating for all tasks to finish...")
await asyncio.gather(*tasks)
logger.info(f"All alarms notified at {date_time}")
Expand Down

0 comments on commit 809c1a7

Please sign in to comment.