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

Django-Simple-Task: Асинхронный Django 3 Task Runner

Асинхронный бегун Django 3 Task, который не требует других услуг и отдельных рабочих процессов. Tagged с Django, Asgi, Python.

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

Вы можете выполнять подобные фоновые задачи в представлении Django, и это просто сработало.

from django_simple_task import defer

def task1():
    time.sleep(1)
    print("task1 done")

async def task2():
    await asyncio.sleep(1)
    print("task2 done")

def view(requests):
    defer(task1)
    defer(task2)
    return HttpResponse(b"My View")

Вот обзор того, как это работает:

  1. При запуске приложения создается очередь, и многие работники начинают слушать очередь
  2. При вызове отложения в очередь добавляется задача (функция или функция косята)
  3. Когда работник получает задачу, он запускает его или делегирует его в тему
  4. При выключении приложения он ждет, пока задачи закончат перед выходом на сервер ASGI

Просмотр на PYPI

Посмотреть на GitHub

Прочитайте документы

Оригинал: “https://dev.to/ericls/django-simple-task-a-django-3-task-runner-that-does-not-require-other-services-and-separate-worker-processes-5akj”