Можно ли поместить функцию в цикл времени с помощью django-background-task

Скажем, я хочу выполнять функцию каждые 5 минут без использования задания cron.

Что я думаю сделать, так это создать фоновую задачу django, которая фактически вызывает эту функцию, и в конце этой функции я снова создаю эту задачу с расписанием = скажем, 60 * 5.

это эффективно помещает функцию в цикл, основанный на времени.

Я пробовал несколько итераций, но я получаю ошибки импорта. Но можно это сделать или нет?


person Rohit    schedule 06.05.2016    source источник


Ответы (2)


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

Так что, какую бы стратегию вы ни выбрали, вы столкнетесь с одной и той же проблемой.

person sprksh    schedule 06.05.2016

Я сделал что-то вроде. Вы ищете это?

import threading
import time

def worker():
    """do your stuff"""
    return

threads = list()
while (true):
    time.sleep(300)
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()
person Elias MP    schedule 06.05.2016
comment
Да, это может послужить цели, которую я также могу выполнить, настроив задание cron, но мне было действительно любопытно создать цикл с фоновой задачей. - person Rohit; 06.05.2016
comment
@Рохит. Вы используете поток, поэтому вы можете использовать параллельную обработку. Я имею в виду, что вы можете вызвать этот цикл как поток из другой функции. - person Elias MP; 06.05.2016