Использование callLater в Twisted для отслеживания концовок аукциона - PullRequest
2 голосов
/ 10 декабря 2011

Мне было интересно, будет ли хорошей идеей использовать callLater в Twisted для отслеживания концовок аукциона. Это будет callLater порядка 100 000 секунд, хотя имеет ли это значение? Похоже, это было бы очень удобно. Но опять же, если сервер выходит из строя, кажется ужасной идеей.

Ведение базы данных о том, когда все аукционы заканчиваются, кажется наиболее безопасным решением, но проверка всей базы данных каждую секунду, чтобы увидеть, закончился ли какой-либо аукцион, кажется очень дорогой.

Если сервер выходит из строя, возможно, сервер сможет воссоздать все callLater из записей базы данных времени окончания аукциона. Есть ли другие потенциальные проблемы для такой модели?

1 Ответ

4 голосов
/ 11 декабря 2011

Один из проектов Divmod, Аксиома, может быть применим здесь. Аксиома это объектная база данных. Одна из неожиданных полезных функций - постоянная система планирования.

Вы планируете события, используя API, предоставляемые базой данных. Когда наступают события, вызывается указанный вами обратный вызов. События сохраняются при перезапуске процесса, поскольку они представлены в виде объектов базы данных. Поддерживается большое количество запланированных событий, только выполняя работу, чтобы отслеживать, когда произойдет событие next .

Канонический сайт Divmod некоторое время назад прекратил работу (к сожалению, компания больше не занимается эксплуатацией), но весь код доступен на http://launchpad.net/divmod.org, а документация медленно обновляется на http://divmod.readthedocs.org/.

...