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

Более простая альтернатива очереди задач RQ

Супер простой для настройки и использования фонового работника, изготовленного в Python. Tagged с фоновым работником, FounalTasks, TaskQueue, Python.

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

Есть несколько проектов, которые решают эту проблему, но я хотел, чтобы решение еще было проще в использовании и настройке, поэтому я создаю тот, который я назвал Kerground (Wor ker + назад земля )

Работа с Kerground выглядит так:

  • Во -первых, добавьте свои функции, которые занимают больше времени, чем несколько секунд для выполнения в рабочих файлах;

  • Во -вторых, импорт и создание класса Kerground в вашем API и начните отправлять мероприятия работнику Kerground.

Быстрый старт

Установить

pip install kerground

Отметьте своих файловых работников, назвав их _worker.py префикс

my_worker.py

Kerground будет выглядеть в *_worker.py и считать каждую функцию событием.

Импорт Kerground экземпляр в вашем API/Views/Discacer и начните отправлять события.

#my_api.py

from kerground import Kerground

ker = Kerground()

@app.route('/some-task')
def long_wait():
    id = ker.send('long_task') 
    return {'id': id}

Событие long_task Имя функции из файлов *_worker.py

#my_worker.py
import time

def long_task():
    # heavy workoad, more than a few seconds job
    time.sleep(2)

Ваши API и работники должны быть в том же пакете/каталоге.

root
├── api
│   ├── __init__.py
│   └── my_api.py
└── worker
    ├── __init__.py
    └── my_worker.py

Откройте 2 окна CMD/терминала в каталоге примера:

  • В одном из терминала начните свой API Python3 api/my_api.py ;
  • в другом типе Kerground Анкет

Выше у вас есть пример керна с колбой. Как видите, Kerground имеет минимальную настройку и очень прост в использовании. Вдохновение пришло от pytest Там, где вы только что вводите Pytest в терминале, а тесты найдены и выполняются почти с 0 конфигурацией.

Проверьте Kerground Repo Здесь Анкет

Оригинал: “https://dev.to/climentea/kerground-background-worker-for-python-3f9h”