26.06.2009 14:26

  1. Василий

    0 ↑
    0 ↓
    У меня есть потребность реализовать некоторое приложение со сложной внутренней логикой на джанге. Концепция сигналов мне очень подходит для реализации бизнес процессов, однако есть потребность в сигналах, которые генерировались бы не в результате одноразового выполнения функции или модификации объекта, а по расписанию. Иными словами хочется использовать механизм сигналов для активизации различных частей системы по расписанию.
    Это возможно сделать не сильно противореча идеологии джанги?
  2. Сигналы для этого не предназначены. Читайте: http://softwaremaniacs.org/blog/2009/05/31/what-signals-for/
  3. Ну и в дополнение к ответу как не надо делать, ответ как надо делать: складывайте задания в очередь и обрабатывайте по крону. Стандартный подход.

  4. Василий

    0 ↑
    0 ↓
    Была мысль об объекте, который мог бы по расписанию сам генерировать сигналы. Таймер такой, своеобразный. Понимаю что в концепцию событийно-ориентированного программирования не очень вписывается, но крон тоже не способствует идеологической чистоте решения. Крон ещё не очень хорошее решение потому что расписание нужно извне настраивать, а не в самом приложении состоянием объектов.
  5. но крон тоже не способствует идеологической чистоте решения.

    Не возьмусь спорить о таких понятиях, как "идеологическая чистота". Однако крон — это то самое работающее по расписанию стандартное отлаженное и простое решение, которое вы ищете.

    Крон ещё не очень хорошее решение потому что расписание нужно извне настраивать, а не в самом приложении состоянием объектов.

    Вы можете настроить крон один раз в максимально простом режиме: просто чтобы он дёргал ваше приложение достаточно часто. А уже в приложении с помощью состояниё объектов как угодно гибко настраивать, что и когда запускать.

  6. Василий

    0 ↑
    0 ↓
    То есть вы имеете в виду с помощью крона организовать вызов какого-то метода моего приложения, а уже этот метод будет посылать необходимые сигналы? Это просто гениальное решение! Спасибо огромное. :-)
  7. Andrey

    0 ↑
    0 ↓

    с помощью крона организовать вызов какого-то метода моего приложения, а уже этот метод будет посылать необходимые сигналы

    А зачем тогда сигналы ? Просто дёргайте вьюху по URL и делайте в ней что хотите.

  8. Василий

    0 ↑
    0 ↓
    Возможно я не очень точно мою задачу описал. Я пишу по сути фреймворк на основе джанги, который будет служить для разработки специфических систем автоматизации. Для реализации картотечных функций достаточно моделей, для бизнес логики, выраженной в терминах конечных автоматов - нужны сигналы. Заранее неизвестно с какого рода объектами нужно что-то сделать в какое-то время. Поэтому предполагается создать объект таймер, который будет по расписанию сигналы времени в "Бесконечный Эфир" выдавать, а объекты реализующие автоматную логику будут на них реагировать. Эти же самые объекты будут реагировать на стандартные сигналы отдельных моделей. То есть сигналы вида pre_save/post_save все равно будут использоваться для определения факта модификации моделей, тогда почему бы и время сигналами не раздавать всем заинтересованным объектам?
  9. Раздавайте сигналы, раз они вам нужны. По крону.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.