Рубрики
Без рубрики

Обновленная переработка очереди Для казонита 2.1.

Информация о новых функциях очереди для масонита. Теги с Python, Framework, Masonite.

Я хотел бы написать этот пост, чтобы продемонстрировать некоторые из изменений в этом выпуске, поскольку это немного больше, чем несколько изменений файлов.

Особенность очереди в Масонит Позволяет размещать задания в несколько поддерживаемых драйверов, чтобы запустить их позже, либо асинхронно, либо через некоторое сообщение Broker, как rabritmq.

Оригинальная функция очереди была написана примерно через 3 дня и ввести в масонит и выпущено. Это все, что я лично нужно было сделать, и так как он поцарапал свой зуд, то, возможно, другие разработчики масонита тоже найдут это хорошо.

Во время разработки Masonite 2.2 (будет выпущено в июне 2019 года), я хотел взять несколько концепций и «переделать» их, чтобы сделать их лучше внутренне, что обычно просто влечет за собой переписывание реализации с нуля, не касаясь внешнего интерфейса.

Другими словами, я хотел сделать довольно большой перезапись, но и сделайте его нерешительным изменением, которые могут попасть в следующую второстепенную версию структуры.

Поэтому в этом посте я расскажу об всех новых функциях переработки очереди.

очередь: команда работы

Есть несколько изменений в Очередь: работа команда. Теперь вы можете указать драйвер, который вы хотите начать работник для использования -d или - передают вариант:

$ craft queue:work -d amqp

Теперь это будет управлять работник очереди для конкретного водителя.

Неудачные рабочие места

Неудачные задания являются действительно потрясающим новым дополнением к масониту. До того, как работа потерпела неудачу, что это застряло в очереди. Вы должны были бы очистить работу, если она не удалась.

Теперь работа внутри очереди будет пытаться запустить 3 раза обратно с 1 секундой, прежде чем, наконец, вызова задания неисправности.

Если работа не удается, это позвонит не удалось Метод на работе. Нормальная работа может теперь выглядеть что-то вроде:

from masonite.queues import Queueable
from masonite.request import Request
from masonite import Mail

class SendWelcomeEmail(Queueable):
    def __init__(self, request: Request, mail: Mail):
        self.request = request
        self.mail = mail

    def handle(self):
        return 2/0 # fails

    def failed(self, payload, error):
        self.mail.to('developer@company.com').send('
            The welcome email failed with error {}
        '.format(error))

Первый параметр – это полезная нагрузка, которая пробовала под управлением, которая является словарь информацией, которая выглядит так:

payload == {
    'obj': ,
    'args': ('some_variables',), 
    'callback': 'handle', 
    'created': '2019-02-08T18:49:59.588474-05:00', 
    'ran': 3
}

И ошибка может быть что-то вроде разделение ноль Отказ

Теперь вы можете получить довольно активный взгляд на вашу работу, когда они потерпят неудачу

Сохранение неудачных заданий

Если работа не удается, она будет просто исчезнуть. Вы не можете снова запустить неудачную работу.

Вот почему у нас сейчас есть стол и миграция для неудачных рабочих мест. Вы можете создать таблицу и перенести его в вашу базу данных, запустив:

$ craft queue:table
$ craft migrate

Это создаст новый файл миграции для вас в каталоге Migration. Затем вы можете мигрировать вручную.

Теперь, когда работа не удается, это фактически сериализует ее и хранит ее в этой таблице. Для того, чтобы снова запустить работу, вы можете запустить

$ craft queue:work --failed

который снова отправляет все задания в очередь, чтобы переработать.

Внутреннее переписать

Для тех, кто развивает драйверы для масонита. Эта функция сделала с внутренней перезаписью того, как записаны драйверы. Все драйверы теперь должны наследовать от BaseQueedriver Что дает каждому водителю несколько функций теперь соответствовать казониту.

Поскольку я знаю, что для масонита нет других драйверов очередей, я чувствую себя комфортно, делая это изменение.

Договор на очереди теперь имеет больше методов в этом. Значение больше методов требуется для создания драйвера очереди, который соответствует договору очереди.

Очередь: работа Команда теперь водитель в очереди агностик, когда ранее это было только для AMQP Водитель. До тех пор, пока ваш водитель наследует от Queuecontract. Тогда вам все будет в порядке, чтобы добавить водителя масонит.

Если вы хотите внести свой вклад или поддерживать разработку Masonite, перейдите к Masonite Github И дайте ему звезду!

Оригинал: “https://dev.to/masonite/updated-queue-rework-for-masonite-21-4hfh”