Как обслуживать постоянно работающий скрипт Python для нескольких пользователей (Social Media Bot) - PullRequest
0 голосов
/ 10 апреля 2019

Надеюсь, у всех вас замечательный день.Поэтому я работаю над проектом с использованием Python.Задача сценария - автоматизировать действия и задачи на платформе социальных сетей с помощью http-запросов.На данный момент один экземпляр этого скрипта имеет доступ к одной учетной записи пользователя.Теперь я хочу создать веб-сайт, на котором я могу позволить пользователям регистрироваться, вводить свои учетные данные в платформу социальных сетей и запускать экземпляр этого сценария для выполнения задач автоматизации.Я думал о создании нового процесса этого скрипта каждый раз, когда новый пользователь регистрируется, но это не кажется эффективным.Также, хотя об использовании потоков, но также не представляется разумным.Особенно, если регистрируется 10000 пользователей.Каков наилучший способ сделать это?Как я могу масштабировать?Большое спасибо заранее, ребята.

1 Ответ

1 голос
/ 10 апреля 2019

Каков характер выполняемых вами задач?

Являются ли задачи просто заданиями, выполняемыми в запланированное время дня или каждые X минут?Для этого вы могли бы зарегистрировать в своем веб-приложении cronjobs или аналогичные, и каждый cronjob может порождать экземпляр вашего скрипта, который, как я полагаю, является кратковременным, для выполнения автоматизированной задачи по одному пользователю за раз.Если точное время выполнения сценария не имеет значения, вы можете разбросать выполнение этих сценариев в течение дня, на отдельных машинах, если это необходимо.

Приведенный выше подход, вероятно, не будет хорошо масштабироваться до 10 000 пользователей,и вам понадобится что-то более надежное, особенно если скрипт должен постоянно работать (например, вы опрашиваете некоторые данные из Facebook и должны реагировать на их изменения).Если на одного пользователя приходится много общения, то вы можете рассмотреть возможность использования модели «производитель-потребитель», где группа сценариев производителя (которые работают постоянно) выдают рабочие запросы в глобальную очередь, которую запрашивает и выполняет группа пользовательских сценариев.Вы также можете распределить нагрузку между такими потребителями и производителями на нескольких машинах.

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

...