Джанго: где разместить бесконечный цикл - PullRequest
0 голосов
/ 08 ноября 2019

В настоящее время я работаю над проектом, в котором мне нужно было бы интегрировать приложение django с mastodon, федеративным сервисом, похожим на твиттер.

Для взаимодействия с Mastodon я использую пакет Mastodon.py:https://mastodonpy.readthedocs.io/en/stable/#

Мне потребуется отслеживать события, происходящие с определенной учетной записью мастодонта, учетной записью бота, управляемой приложением django, с использованием потоковых возможностей, предоставляемых пакетом: https://mastodonpy.readthedocs.io/en/stable/#streaming

ИтакМне нужно было бы вызвать один из этих потоковых методов в бесконечном цикле. Но я не могу понять, где я должен поместить это в Джанго. Есть ли где-нибудь основной цикл, куда я мог бы его вставить?

Ответы [ 3 ]

1 голос
/ 08 ноября 2019

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

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

Честно говоря, я не знаю, насколько это хорошее решение для производительности и скорости, но оно делает свою работу.

1 голос
/ 08 ноября 2019

Вам нужно запускать подобные вещи в фоновом режиме. Существует множество опций, которые вы можете выбрать для настройки фоновой обработки.

Я считаю, что следующее довольно легко настроить, и это может быть хорошим началом для вас.

Django Фоновые задачи

По сути, вы создаете функцию / задание, которое должно выполняться в фоновом режиме. Вы аннотируете это специальным декоратором, чтобы зарегистрироваться в качестве задачи.

Затем вы можете выбрать, когда запускать - в вашем случае - вы можете запускать его многократно каждый определенный промежуток времени (нет необходимости в «бесконечном» цикле в вашей задаче).

Этобаза данных очереди задач - так вы запустите процесс, который контролирует ваши задачи и запускает их в выбранное время. Подробности смотрите в документации.

0 голосов
/ 08 ноября 2019

Вы можете создать метод для обработки того, что вы хотите, и вызывать этот метод в таких файлах, как urls.py (который будет вызываться только один раз при запуске сервера).

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