Skip to content

Commit 17c6539

Browse files
committed
add docs!
1 parent 533b213 commit 17c6539

File tree

2 files changed

+25
-14
lines changed

2 files changed

+25
-14
lines changed

app/clock.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import asyncio
21
import os
3-
from datetime import datetime
2+
import asyncio
43
import random
4+
from datetime import datetime
55
from arq import create_pool
66
from arq.connections import RedisSettings
77
from apscheduler.schedulers.asyncio import AsyncIOScheduler
@@ -10,18 +10,21 @@
1010

1111
async def tick():
1212
now = datetime.now()
13-
id_device = random.randint(0, 99999)
14-
logger.info(f"[{id_device} {now}] Tock! Enqueuing job")
15-
await redis.enqueue_job('heavy_endpoint', id_device)
16-
logger.info(f"[{id_device} {now}] Job enqueued")
13+
random_int = random.randint(0, 99999)
14+
logger.info(f"[{random_int}] [{now}] Tock! Enqueuing job")
15+
await redis.enqueue_job('heavy_endpoint', random_int)
16+
logger.info(f"[{random_int}] [{now}] Job enqueued")
1717

1818
if __name__ == '__main__':
19-
logger = init_logging('clock')
2019
INTERVAL_SCHEDULE_SECS = int(os.environ.get('INTERVAL_SCHEDULE_SECS', 5))
20+
21+
logger = init_logging('clock')
2122
logger.info('Starting scheduler. Interval %s' % INTERVAL_SCHEDULE_SECS)
23+
2224
scheduler = AsyncIOScheduler()
2325
scheduler.add_job(tick, 'interval', seconds=INTERVAL_SCHEDULE_SECS)
2426
scheduler.start()
27+
2528
redis_url = os.environ.get('REDIS_URL')
2629
redis = asyncio.get_event_loop() \
2730
.run_until_complete(create_pool(RedisSettings.from_dsn(redis_url)))

app/worker.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,28 @@ async def shutdown(ctx: Worker) -> None:
2424
ctx['users_repository'].shutdown()
2525

2626

27-
async def heavy_endpoint(ctx: Worker, id_device: str):
27+
async def heavy_endpoint(ctx: Worker, random_value: str):
2828
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
29-
logger.info(f"[{id_device} {now}] Calling heavy endpoint...")
30-
session: AsyncClient = ctx['session']
31-
user_repository: UsersRepository = ctx['users_repository']
32-
user_id_one = user_repository.get_user(1)
33-
logger.info(f"[{id_device} {now}] User 1: {user_id_one}")
29+
logger.info(f"[{random_value}] [{now}] Calling heavy endpoint...")
30+
# Busco simular llamado a un endpoint que me TARDE MUCHISIMO
31+
# en responder. En este caso, 10 segs.
32+
# (mismo puede ser un llamado LENTO a una base de datos, etc.)
3433
secs_delay = 10
34+
session: AsyncClient = ctx['session']
3535
url = 'https://httpbin.org/delay/%s' % secs_delay
3636
response = await session.get(url)
3737
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
38-
logger.info(f'[{id_device} {now}] Succesfuly called'
38+
logger.info(f'[{random_value}] [{now}] Succesfuly called'
3939
f' heavy endpoint. Response: {response.json()}')
4040

41+
# Tambien podemos acceder a la capa de repositorio...
42+
# (aquí es donde habría que consultar al CRUD de Alarmas,
43+
# buscar si en el minuto actual hay alguna alarma
44+
# de algún usuario, y si la hay, enviar una notificación)
45+
user_repository: UsersRepository = ctx['users_repository']
46+
user_id_one = user_repository.get_user(1)
47+
logger.info(f"[{random_value}] [{now}] User 1: {user_id_one}")
48+
4149

4250
class WorkerSettings:
4351
functions = [heavy_endpoint]

0 commit comments

Comments
 (0)