2012-01-29 5 views
1

Я написал программу с помощью Tweepy, которую я могу запустить на своем домашнем компьютере, чтобы отслеживать поток Twitter. То, как Tweepy делает это, состоит в том, что всегда выполняется цикл while (true). Теперь то, что я хочу сделать, это связать эту программу с моим приложением Django. Один из способов сделать это - оставить программу Twitter на локальном компьютере и обновить базу данных сервера при получении сообщения. Тем не менее, мне было интересно, что мне нужно, чтобы запустить программу Twitter в фоновом режиме на моем сервере. Я использую Django.Мониторинг потока Twitter на веб-сервере

ответ

2

Как вы обнаружили с вашим комментарием, сельдерей не идеален - вам понадобится еще один длительный процесс мониторинга существующего долгого процесса (вашего клиента) ,

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

Node.js в сочетании с SocketIO предназначен для решения этой проблемы, и поскольку просмотр в реальном времени твиттера в реальном времени является обычным случаем, многие примеры плавают около - streamie является одним из них.

Эта комбинация дает вам javascript-клиент, который автоматически обновляется на основе данных; не требуется обновление, ajax-опрос, cron и т. д.

2

Вы можете использовать Celery, который представляет собой очередь задач, которая может выполнять задачи в фоновом режиме (то есть вне цикла запроса/ответа). Он также имеет интеграцию django с django-celery.

Вы можете настроить его для выполнения периодических задач, то есть проверить поток twitter каждые 5 минут, используя твиты и сохранить результаты в db. В качестве альтернативы вы можете настроить задачу, которая срабатывает при выполнении операции, то есть когда пользователь нажимает что-либо на веб-сервере, запустите фоновое задание, чтобы очистить твиттер.

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

+2

Мне нравится идея Celery в целом, но если утилите ops не нужно реагировать на какие-либо триггеры из цикла запроса/ответа, и все, что вы собираетесь сделать, установлено и забывает таймер, cron легко решить проблему. Хотя +1 по предложению и здесь. Из описания OPs до сих пор не кажется, что утилита будет иметь реальную выгоду от жизни внутри процесса сервера django. – jdi

+2

Мое голосование за работу cron, так как оно специально не связано с функцией просмотра. Я стараюсь использовать сельдерей только тогда, когда мне приходится из-за дополнительной сложности. –

+0

Да, оба хорошие моменты. Если он просто работает в фоновом режиме без какой-либо ссылки с точки зрения пользователя, то сельдерей определенно будет переполнен –

Смежные вопросы