Exemple #1
0
    def loop(self):
        while True:
            try:
                # получаем id`шники записей из БД рандомно для того чтобы не
                # получать одни и теже записи, которые не могут быть отправлены
                rids = [record.id for record in Message.select().order_by(Random()).limit(10)]
            except PeeweeException as e:
                # если что-то полшло не так
                # пропускаем текущую итерацию
                log.error(e)
                continue

            # перебираем все id`шники
            for rid in rids:
                try:
                    message = Message.get(Message.id == rid)

                    with db.transaction():
                        # удаляем запись по id
                        Message.delete().where(Message.id == rid).execute()
                        # выполняем отправку сообщения
                        self.smtp_conn.send(message.to, message.frm, message.body, message.topic)

                except (OSError, TypeError, PeeweeException, SMTPException) as e:
                    log.error(e)
                    continue

            sleep(self.sleep_time)
Exemple #2
0
from humandaemon import Hudaemon

if __name__ == "__main__":

    daemon = Hudaemon('/tmp/pid')

    if len(sys.argv) == 2:
        if sys.argv[1] == 'start':
            daemon.start()
        elif sys.argv[1] == 'stop':
            daemon.stop()
        elif sys.argv[1] == 'restart':
            daemon.restart()
        elif sys.argv[1] == 'status':
            print(daemon.status())
            sys.exit(0)
        elif sys.argv[1] == 'total':
            print(Message.select().count())
        elif sys.argv[1] == 'clear':
            was = Message.select().count()
            Message.clear()
            now = Message.select().count()
            print("was %s - now - %s" % (was, now))
        else:
            print("Unknown command")
            sys.exit(2)
        sys.exit(0)
    else:
        print("usage: %s start|stop|restart|status|clear|total" % sys.argv[0])
        sys.exit(2)