Skip to content
kctier edited this page Oct 13, 2015 · 1 revision

Сначала в контексте установки всего на локалхост.

Потребуется:

  • постгрес для джанги и kvstore (опционально на редисе, отдельная задачка будет)
  • rabbitmq для коммуникации между процессами
  • установленные ffmpeg/ffprobe
  • биндинги для всего вышеперечисленного: pika psycopg2

Так как это локалхост, все процессы крутятся в одном экземпляре (для простоты объяснения, маньяки могут запустить несколько процессов).

Процессов у нас будет 4:

  • джанга
  • скачиватель, построитель превью, добавлятель в джангу - всё в одном процессе, но разделённое на модули. скорости и одного потока хватит с головой. парсинга этот процесс не делает никакого. отсева по уникальности тоже. он тупо берёт урл с дополнительными данными типа тегов (которые через него сквозняком идут, не задействуясь нигде), скачивает его в /tmp/, запускает анализ и построение превью в том же /tmp/, потом addvideo это всё копирует в джангу
  • отсеиватель на уникальность. держит под собой несколько разнородных kv хранилищ, которые можно подключать и отключать, например хранилище всех md5 которые уже были. извращуги могут написать анализ видео для построения собственных ключей, но для начала будут: урлы, md5, размер файла. слушает и пишет (не считая kv, который как бы приватный для этого процесса) он только кролика, все задания на проверку уникальности посылаются сюда и ответы уходят отсюда тоже через mq. причём обратиться может даже скачиватель, который уже скачал вебм и посчитал от файла md5.
  • парсеры и пауки. их может быть сколько угодно и с разных ресурсов. их задача нагаживать в rabbitmq и спрашивать отсеиватель через тот же самый rabbit, были ли уже такие урлы/md5/ещё что там предварительно без скачивания можно узнать.

Процессы можно держать запущенными руками, башскриптами или с помощью какого-нибудь supervisor.

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

Clone this wiki locally