production-evyos-systems-an.../ServicesTask/app/services/parser/mail/main.py

53 lines
1.8 KiB
Python

import os
import asyncio
import fnmatch
from app.services.types.queue import Enqueue
from app.services.common.service_base_async import ServiceBaseAsync
from app.services.types.task import Job
from app.services.types.mail import ProcessMailObject
PRODUCE_BURST = int(os.getenv("PRODUCE_BURST", "10"))
PRODUCE_ONCE = os.getenv("PRODUCE_ONCE", "true").lower() == "true"
EVENT_TYPE = os.getenv("EVENT_TYPE", "db-mongo")
PROCESS_SEC = 10
async def produce(svc: ServiceBaseAsync):
await asyncio.sleep(PROCESS_SEC)
async def handle_mail_publish(svc: ServiceBaseAsync, job: dict):
# Check for bank mail is from which Bank and to which bulding
job_model = Job(**job)
process_mail_object = ProcessMailObject(**job_model.payload)
mail_id = process_mail_object.data.id
task_id = f"IsBankServiceMailParser_{mail_id}"
enqueue = Enqueue(task_id=task_id, payload=process_mail_object.model_dump(), action="parser.excel.publish")
await svc.enqueue(enqueue)
print(f"Parser Mail Consumer parsed handle_mail_publish : {enqueue.task_id}")
await svc.ack_current()
await asyncio.sleep(PROCESS_SEC)
async def handle_mongo_publish(svc: ServiceBaseAsync, job: dict):
print('job', job)
job_model = Job(**job)
await svc.ack_current()
print("Parser Mail Consumer default handle_mongo_publish :", job_model.task_id)
await asyncio.sleep(PROCESS_SEC)
async def consume_default(svc: ServiceBaseAsync, job: dict):
job_model = Job(**job)
await asyncio.sleep(PROCESS_SEC)
print("Parser Mail Consumer default consume_default :", job_model.task_id)
return
if __name__ == "__main__":
svc = ServiceBaseAsync(produce_fn=produce, consume_fn=consume_default, handlers={"mail.service.publish": handle_mail_publish})
asyncio.run(svc.run())