47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
|
import time
|
||
|
|
||
|
from celery import shared_task
|
||
|
import asyncio
|
||
|
|
||
|
from paper.parser import PaperParser
|
||
|
from app.models.task import Task
|
||
|
from app.extensions import db
|
||
|
from .handlers import run_state, failure_state, success_state
|
||
|
|
||
|
async def add_to_group(session, task, task_self):
|
||
|
async with PaperParser(session.name) as parser:
|
||
|
await parser.invite_users(session.users, task.url, task_self)
|
||
|
|
||
|
async def sending_message(session, task, task_self):
|
||
|
async with PaperParser(session.name) as parser:
|
||
|
await parser.send_messages(session.users, task.message, task.file, task_self)
|
||
|
|
||
|
@shared_task(bind=True)
|
||
|
def add_to_group_task(self, task_id):
|
||
|
try:
|
||
|
task: Task = Task.query.get(task_id)
|
||
|
run_state(self.request.id, task_id)
|
||
|
|
||
|
session = task.session
|
||
|
|
||
|
time.sleep(10)
|
||
|
|
||
|
asyncio.run(
|
||
|
add_to_group(session, task, self)
|
||
|
)
|
||
|
|
||
|
except Exception as e:
|
||
|
failure_state(self.request.id, e)
|
||
|
raise e
|
||
|
|
||
|
else:
|
||
|
success_state(self.request.id)
|
||
|
|
||
|
|
||
|
|
||
|
@shared_task(bind=True)
|
||
|
def send_messages_task(self, task_id):
|
||
|
task: Task = Task.query.get(task_id)
|
||
|
|
||
|
session = task.session
|
||
|
users = session.users
|