Django + Архитектура Scrapy multi scrappers - PullRequest
1 голос
/ 13 января 2020

Недавно я занялся проектом Django, одним из компонентов которого является Scrapy Scrappers (много основных функций). Стоит добавить, что скребки просто загружают базу данных несколько раз в день, и веб-приложение django использует эти данные.

Скребки имеют прямой доступ к модели Django, но, на мой взгляд, это не лучшая идея (смешанные обязанности - django скорее должен выступать в роли веб-приложения, а не скребков, не так ли?) Например, после того, как такие разделенные скребки могут быть запущены без сервера, экономя деньги и создавая их только при необходимости.

Я рассматриваю это как отдельный компонент в архитектуре. Но если бы я отделил скребки от веб-сайта Django, мне бы также потребовалось заполнить базу данных там - и для изменения модели либо в веб-приложении Django, либо в приложении соскоба потребуется изменение во втором приложении для настройки.

Я действительно не видел статей о разделении этих приложений.

Каковы лучшие практики здесь? Стоит ли его разделять? Как бы вы организовали развертывание в облачное решение (например, AWS)?

Спасибо

1 Ответ

1 голос
/ 14 января 2020

Ну, это большое обсуждение, и у меня та же "хорошая проблема".

Краткий ответ:

Я предлагаю вам, если вы хотите отделиться это, вы можете отделить логи c от данных, используя различные схемы. Я делал это раньше, и это хороший подход.

Длинный ответ:

Вопросы:

  • Как только вы соберетесь информация от скребков, вы что-то делаете с ними (агрегация, обработка или что-то еще)?

Если ответ да , вы можете разделить его на 2 DB. Один с необработанной информацией, а другой с обработанной (которая будет передана Django).

Если ответ нет , я не вижу причин для отделить это. В конце концов, Django является только визуализатором данных.

  • На веб-сайте Django используется много хранимых данных, которые для единственной ответственности вы хотите отделить от них. очищенные данные?

Если ответ да , разделите его схемами или даже БД.

Если ответ нет , вы можете хранить его в той же БД Django. В конце важными данными будут извлеченные данные. Django, возможно, будет иметь конфигурационную базу данных или другие дополнительные данные для управления сетью, но большой процент этой базы данных будет сканироваться / обрабатываться. Зависит от того, сколько вам потребуется, чтобы отделить его и поддерживать. Если вы делаете с самого начала, я бы сделал это отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...