10 сек? Что здесь не так?
project/main/apps.py
from django.apps import AppConfig
class MainConfig(AppConfig):
name = 'main'
def ready(self):
from . import updater
updater.start()
project/main/updater.py
from apscheduler.schedulers.background import BackgroundScheduler
from .something_update import update_something
def start():
scheduler = BackgroundScheduler()
scheduler.add_job(update_something, 'interval', seconds=10)
scheduler.start()
project/main/something_update.py
def update_something():
print("this function runs every 10 seconds")
1. не нужно в джанге запускать фоновые задачи в рамках того же процесса но в отдельном потоке. 2. дай угадаю, ты запускаешь два процесса или потока - воркера, которые обслуживают входящие запросы.
Я просто запускаю приложение командой python manage.py runserver Мне вообще нужно, чтобы приложение работало на хостинге и каждый 10 сек выполняло нужное действие. Это реально сделать силами джанги и scheduler?
запускай в кроне или в отдельном процессе.
Насколько помню, runserver запускает как раз 2 потока. Наверное это оно и есть. Т.е. ты инициализируешь глобальное состояние в своем project/main/apps.py и его наследуют оба треда.
Обсуждают сегодня