Можете ли вы определить "бэкэнд" более точно?Обычно в web-разработчике я следую структуре MVC, в которой мой «front-end», html / css / js и код, связанный с отображением любого из них, слабо связан с моей «backend» моделью (бизнес-объекты и постоянство данных; т.е.база данных).
Мне нравится подход Django «Модель / Представление / Шаблон»:
http://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names
Но вы еще не определили, что вы подразумеваете под «бэкэндом», тактрудно дать совет по шаблонам дизайна.Вы сказали, что у вас есть опыт работы с Python, вы когда-нибудь разрабатывали веб-приложение на основе базы данных?
обновление
На основании вашего комментария я не смогуочень помогаю, так как у меня нет большого опыта в подобных «бэкэндах».Однако, учитывая, как вы извлекаете ресурсы из Интернета, ваша задержка / пропускная способность будет довольно высокой.Итак, чтобы повысить общую эффективность, вам нужно иметь что-то, что может запускать несколько потоков или процессов с довольно высокой степенью параллелизма.Я предлагаю вам проверить ответы в этой теме (и искать похожие):
Одновременные загрузки - Python
В частности, я нашел пример для рекурсивной сетисервер и следующий за ним пример, вероятно, будут хорошим началом вашего решения:
http://eventlet.net/doc/examples.html#recursive-web-crawler
Что касается принятия этой идеи и ее превращения в устойчивый / непрерывный процесс, то этосильно зависеть от вашей платформы и от того, насколько хорошо вы справляетесь с ошибками.В основном:
- запустите его в цикле и убедитесь, что вы обрабатываете любую ошибку, которая может быть выдана
- есть какой-то процесс, отслеживающий ваш рабочий процесс, чтобы убить / перезапустить его, если он зависаетили умрет
- убедитесь, что у вас есть решение для мониторинга, которое уведомит вас, если оно перестанет работать (nagios и т. д.)
Один из лучших способов сделать вещи "надежными" - этосделать их как можно более простыми (не упрощенными).Если все, что вы делаете, это извлекаете информацию из Интернета, каким-то образом анализируете ее, а затем сохраняете эту информацию в БД, то постарайтесь сделать процесс максимально простым.Не добавляйте излишнюю сложность, чтобы сделать ее более надежной.Если у вас получится 200-строчный скрипт, который делает то, что вы хотите, отлично!