senderbot/modules/queue.py

50 lines
1.4 KiB
Python
Raw Normal View History

2024-06-09 14:20:48 +03:00
from dataclasses import dataclass, field
import queue
import threading
from time import sleep
@dataclass
class Item:
type_mailing: str = field(default_factory=str)
company: str = field(default_factory=str)
to: str = field(default_factory=str)
text: str = field(default_factory=str)
status: str = field(default_factory=str)
error_message: str = field(default_factory=str)
class QueuePool:
def __init__(self) -> None:
self.id = int
self.list_items = []
self.sended_item = []
self.error_item = []
self.queue = queue.Queue()
self.__start()
def add_to_queue(self, type_mailing: str, company: str, to: str, text: str):
self.list_items.append(Item(
type_mailing=type_mailing,
company=company,
to=to,
text=text,
status="pending"
))
def __worker(self):
while True:
# here will be a function for mailing
item = self.queue.get()
print("=====")
print(f"Send to: {item.to}")
sleep(2) # timeout between messages
print("Timeount is end")
self.queue.task_done()
def __start(self):
threading.Thread(target=self.__worker, daemon=True).start()
def run_mailing(self):
for item in self.list_items:
self.queue.put(item)
self.queue.join()