С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66

Сохранить переменную Apscheduler scheduler в памяти

05.08.2020, 09:54. Показов 1831. Ответов 8

Студворк — интернет-сервис помощи студентам
Я хочу сохранить экземпляр BackgroundScheduler который я использовал чтобы отложить действие.

У меня есть веб-приложение джанго. В админке я создаю модель уведомления. После сохранения я через save_model откладываю это уведомление на дату которая была указана в нем же. И после мне приходит письмо на почту в нужное время и все прекрасно все радуются. Но вот что если мне нужно изменить это уведомление?? Или вовсе удалить. Экземпляр шедулера теряется после того как отложишь действие на потом.

А только с его помощью можно изменить или удалить запланированное действие. Поэтому с помощью нескольких "return"-ов я поднял нужную мне переменную до файла admin.py

А теперь вопрос - как эту переменную сохранить а главное где? Чтобы можно было например отловить удаление модели и после него удалить отложенное действие, или также но изменить. Голову ломаю а инфы никакой не нашел. Кто может сталкивался хоть с чем-то подобным, или может я просто неправильный алгоритм построил? В общем заранее спасибо за любой совет ; )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2020, 09:54
Ответы с готовыми решениями:

Сохранить переменную в памяти
Как через php, можно сохранить переменную в апперативной памяти сервера?

Сохранить в памяти переменную из временной формы
Привет всем! Чувствую себя лузером, поэтому прошу помочь! В программе, которую пишу, есть 2 формы: главная и вспомогательная (с...

Сохранить и прочитать из памяти переменную типа word
имеется программа которая читает показания с датчиков и сохраняет их в память а при получении запроса передает их блоку связи. но есть одна...

8
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
05.08.2020, 10:44
Нельзя ли прояснить вопрос?. Я представляю себе задачу так: в заданное время пойти в БД, взять уведомление и емейл и отправить его. Т.е. уведомление всегда будет актуальным. Так подходит?
0
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
05.08.2020, 11:19  [ТС]
Kifsif, сразу же после создания иду в бд беру уведомление и отправляю его с датой и временем менеджеру-планировщику в лице BackgroundScheduler c apscheduler.

Добавлено через 4 минуты
Я проясню немного, я хочу сделать что-то в таком стиле - http://effbot.org/pyfaq/how-do... odules.htm
Почему что-то в таком а не такое же - потому что в таком же виде не работает((

при создании я вывожу в консоль переменную и вижу:
scheduler: <apscheduler.schedulers.background.Backg roundScheduler object at 0x7ffa95410e50>
а потом в нужный мне момент с другого файла:
scheduler: <apscheduler.schedulers.background.Backg roundScheduler object at 0x7f574fad8760>

кароче суть в том что они разные(

Добавлено через 5 минут
scheduler.py:

Python
1
2
3
from apscheduler.schedulers.background import BackgroundScheduler
 
main_scheduler = BackgroundScheduler(daemon=True)

stats_scheduler.py:

Python
1
2
3
4
5
6
7
from . import scheduler
 
scheduler.main_scheduler.add_job(check_stats, 'interval', minutes=1, max_instances=1) 
 
scheduler.main_scheduler.start()
 
print(scheduler.main_scheduler)

admin.py :

Python
1
2
3
from . import scheduler, stats_scheduler
 
print(scheduler.main_scheduler)
Добавлено через 26 секунд
код частичный и это тестовый пример

Добавлено через 40 секунд
в двух местах где принчу - нужна одна и таже переменная, но они разные по какой-то причине

Добавлено через 1 минуту
stats_scheduler запускаю на старте
а в админке принчу когда создам модель
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
05.08.2020, 11:23
Почему вам не подошла предложенная мной схема, когда планировщик просто берет перед отправкой из базы данных самое актуальное содержимое?
0
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
05.08.2020, 11:44  [ТС]
Kifsif, все равно нужно отправляь планировщику дату, тогда почему бы и не отправить все.
Но ваш подход решает все проблемы кроме одной - я не смогу изменить дату.Потому что ее все-равно нужно менять в самом планировщике, и если при обработке можно сравнить дату с текущей и если она позже то перенести отправку, то что если дату изменили на пораньше? Тогда планировщик не узнает и никак не скоректирует время.

А учитывая что я собираюсь делать несколько вещей с планировщиком, то полезно было бы иметь один глобальный на все приложение джанго. Так управлять заданиями будет в разы проще.
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
05.08.2020, 11:50
Цитата Сообщение от anton3d Посмотреть сообщение
Но ваш подход решает все проблемы кроме одной - я не смогу изменить дату.
Как так-то? Сохраните в БД дату отправки. Планировщик по расписанию пошел, достал данные. Смотрит - дата отправки больше текущей. Создает новое задание планировщику с новой датой, а сам ничего не делает.
0
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
05.08.2020, 13:32  [ТС]
Kifsif, вот именно, а что если дата уже прошла? Я обьясню

в 10:00 вы добавляете уведомление. Ставите дату отправки в 17:00.
потом в полдень у вас что-то изменилось и вы переносите время на завтра 18:00.
(Планировщик сегодня в 17:00 вытягивает дату и видит что она изменена на завтра 18:00 - соответственно переносит свою дату на завтра 18:00)

Вот так все работает. Но вот контрпример:

в 10:00 вы добавляете уведомление. Ставите дату отправки в 17:00.
потом в полдень у вас что-то изменилось и вы переносите время(в базе) на сегодня в 16:00.
(Планировщик сегодня в 17:00 вытягивает дату и видит что она изменена на уже минувшую - соответственно срок отправки истек и в прошлое он никак не отправит сообщение)

Добавлено через 49 секунд
т.е с датой больше текущей работает, но с меньше текущей никак
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
05.08.2020, 14:22
Ну, не знаю, разбирайтесь. Надо бы грохнуть просто неактуальную задачу из очереди как-то.
0
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
05.08.2020, 14:56  [ТС]
Нашел решение.

Можно добавить нужную вам переменную в ваш AppConfig как атрибут.
Тогда можно будет с любого места в коде получить доступ к нему:


from django.apps import apps
apps.get_app_config('имя_приложения').ва ш_атрибут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2020, 14:56
Помогаю со студенческими работами здесь

Как сохранить в переменную другую переменную + текст?
Нужно сохранить в одной переменной несколько переменных + текст, что бы потом все это дело вывести на экран. Т.е., что то в роде: ...

Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти?
Добрый день. Не могу найти информацию по двум вопросам : 1) могу ли я разместить переменную в нужную ячейку памяти. Например: int a...

Какое количество адресов содержатся в памяти компьютера, как выделяется разное количество памяти под переменную?
Значит распишу смысл вопроса. Мы создаём переменную например типа int или любого другого. Каждая переменная имеет адрес где храниться...

Сохранить переменную
Как можно сохранить как то переменную Вот такой код: $referer = null; $host = null; if(!empty($_SERVER)){ $referer =...

Сохранить переменную
Доброго времени суток, товарищи. Задача: необходимо сохранить переменную по известному адресу, а затем её оттуда считать. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru