Как запланировать работу (Django, Python) - PullRequest
0 голосов
/ 01 ноября 2018

Я хотел бы создать работу, которая распространяется на все 10 минут. Я нахожу хороший пример здесь . Проблема в том, что программа зависает во время ожидания, а другие мои URL заблокированы. после меня это из-за в то время как True:

Есть ли способ сделать это, не обходя эту проблему?

код голоса:

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

*********************************************** ********************.

Я нашел правильный способ сделать это. Вот ссылка : Чтобы это работало хорошо, я удалил эту часть:

# time.sleep(20)
# print('Checkpoint **************************')
# time.sleep(30)
# print('Bye -----------------------')

Вот код, который работает:

import threading
class ThreadingExample(object):
    """ Threading example class
    The run() method will be started and it will run in the background
    until the application exits.
    """

    def __init__(self, interval=10):
        """ Constructor
        :type interval: int
        :param interval: Check interval, in seconds
        """
        self.interval = interval

        thread = threading.Thread(target=self.run, args=())
        thread.daemon = True                            # Daemonize thread
        thread.start()                                  # Start the execution

    def run(self):
        """ Method that runs forever """
        while True:
            # Do something
            print('Doing something imporant in the background', self.interval)
            pk_info_semaine = job_temp.objects.all()
            for a in pk_info_semaine:
                print('num_semaine:',a.num_semaine,'user_id:',a.user_id)
            time.sleep(self.interval)

example = ThreadingExample()

Спасибо всем и спасибо автору: Пэрис Накита Кейсер Здесь

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете использовать celery + celerybeat вместе с Django для выполнения запланированных заданий. Вы можете написать свой метод как задачу сельдерея и добавить запись в файл settings.py , чтобы запускать задачу каждые 10 минут. Задача будет выполняться в потоке, поэтому ваше приложение не будет блокироваться.

voici le ссылка на сельдерей: http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...