-
Notifications
You must be signed in to change notification settings - Fork 3
YOBA ORHETIKTURE
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, мы избавляемся от большого количества головной боли с межпроцессной коммуникацией.