Django background_task приводит к ошибке BrokenPipeError

Я использую django 3.1.4, django-background-tasks 1.2.5. У меня зарегистрирована задача, которая успешно завершается, когда я выполняю updateProducts.now() из оболочки, но по какой-то причине, когда она выполняется автоматически, в разных частях кода возникает BrokenPipeError. Часто это относится к тому, что коллекция не определена в словаре, который находится в конструкторе класса GClient. Все коллекции определяются в конструкторе класса GClient.

@background(schedule=timezone.now())
def updateProducts() -> None:
    client = GClient()
    db_client = DBClient()
    total_products = 0
    collections = ["collection1", "collection2", "collection3", "collection4"]
    for collection in collections:
        products = client.getProductOfCollection(collection)
        if products is None:
            continue
        total_products += len(products)
        for product in products:
            db_client.addProduct(product)
            if "inventoryQuantity" in product and product["inventoryQuantity"] > 0:
                notify_restock(product["id"], db_client)
    print(db_client.updateErrors)
    db_client.updateErrors = {}
    print(f"Done Updating {total_products} Products")

if not Task.objects.filter(verbose_name="Update Products").exists():
   updateProducts(verbose_name="Update Products", repeat=7200, repeat_until=None)

getProductOfCollection - Выполняет GraphQL запрос на массив продуктов, который может занять от 3 секунд до 1 минуты, периодически проверяет, был ли он выполнен. После выполнения он получает ссылку с json для загрузки, загружает json, разбирает его, сохраняет все продукты в массив и возвращает его.

Вернуться на верх