Пример #1
0
# -*- coding: utf-8 -*-

from libs.log import logging
from models.schedule import Schedule
from views.base import BaseHandler

logger = logging.getLogger(__name__)


class ScheduleHandler(BaseHandler):
    def delete(self):
        try:
            _id = self.request.body
            _id = int(_id)
        except:
            self.abort(400, "request is invalid")
        if not _id:
            self.abort(400, "schedule id invalid")
        schedule = Schedule.get(Schedule.id == _id)
        if not schedule:
            self.abort(400, "schedule not found")
        schedule.invalid()
        self.json({})
Пример #2
0
# -*- coding:utf-8 -*-

from apscheduler.schedulers.blocking import BlockingScheduler
from config import SCHEDULE_INTERVAL
from libs.log import logging
from models.schedule import Schedule
from tools.worker import handle_schedule

logger = logging.getLogger('scheduler')
sched = BlockingScheduler()

@sched.scheduled_job('interval', seconds=SCHEDULE_INTERVAL)
def schedule():
    schedules = Schedule.gets_ready_schedules()
    for sche in schedules:
        logger.info('Get schedule ready to send : %s' % sche.id)
        handle_schedule.delay(sche.id)
        sche.queued()

sched.start()
Пример #3
0
# -*- coding:utf-8 -*-

import traceback
from datetime import datetime
from libs.log import logging
from libs.mq import mq
from libs.mail import send_mail
from config import SEND_ADDRESS
from models.schedule import Schedule, ScheduleStatus
from models.history import History
from models.attachment import Attachment

logger = logging.getLogger("worker")


def _handle_schedule(schedule_id):
    schedule = Schedule.get(Schedule.id == schedule_id)
    if not schedule:
        logger.warn("Schedule is invalid. ID = %s" % schedule_id)
        return
    to_mails = schedule.recipients.split(",")
    attachments = Attachment.gets_by_schedule(schedule_id)
    atta_dicts = [a.to_mandrill_dict() for a in attachments]
    rs = send_mail(
        subject=schedule.subject,
        from_mail=SEND_ADDRESS,
        to_mails=to_mails,
        html=schedule.content,
        attachments=atta_dicts,
    )
    if not rs:
Пример #4
0
# -*- coding:utf-8 -*-

from datetime import datetime, timedelta
from apscheduler.schedulers.blocking import BlockingScheduler
from config import REMOVE_ATTACHMENT_INTERVAL
from libs.log import logging
from models.attachment import Attachment

logger = logging.getLogger('remove_attachment')
sched = BlockingScheduler()

@sched.scheduled_job('interval', seconds=REMOVE_ATTACHMENT_INTERVAL)
def remove_attachment():
    q = Attachment.delete().where(Attachment.schedule_id == 0 ,
                                  Attachment.create_time <
                                  (datetime.utcnow() - timedelta(days=1)))
    cnt = q.execute()
    logger.info('%s useless attachments removed' % cnt)

sched.start()