Длительный процесс демона на django

Мне нужно запустить скрипт Python (который прослушивает Twitter), который будет вызывать различные методы в моем приложении django, когда оно получает твиты, соответствующие определенному хэштегу.

На данный момент я просто запускаю скрипт вручную в командной строке, но я бы хотел, чтобы он запускался внутри django, если это возможно, чтобы я мог управлять им оттуда и чтобы ему не приходилось выполнять HTTP-запросы POST, когда он становится новым. данные.

Я посмотрел на сельдерей (кратко), но мне кажется, что он предназначен для выполнения определенных небольших задач через равные промежутки времени.

Есть ли способ использовать сельдерей (или что-то еще), чтобы иметь возможность контролировать этот долгоиграющий сценарий «слушай Twitter», который у меня есть?


person bodger    schedule 22.08.2012    source источник
comment
выполнение определенных небольших задач через равные промежутки времени кажется именно тем, что вы делаете здесь.   -  person Daniel Roseman    schedule 22.08.2012
comment
Что ж, обновления базы данных, которые происходят при чтении соответствующих твитов, действительно представляют собой небольшие задачи, выполняемые через равные промежутки времени. Но процесс прослушивания, который прослушивает твиты, представляет собой долгосрочный (постоянный) скрипт Python, и мне интересно, может ли сельдерей справиться с этим.   -  person bodger    schedule 23.08.2012


Ответы (1)


Вы должны Supervisord запустить ваше приложение django и ваш скрипт. Сделав скрипт частью проекта Django, вы сможете использовать сигналы Django. который вы можете использовать для написания пользовательского сигнала, который будет испускаться каждый раз, когда ваша логика twitter выполняет то, что она должна делать. Signals блокируют. Если вы хотите, чтобы они были асинхронными, используйте Celery with Django

Альтернативой может быть запуск вашего приложения django и сценария twitter через supervisord, а затем предоставление REST API, которое выполняет HTTP POST для приложения Django. Для этого вы можете использовать TastyPie.

person Pratik Mandrekar    schedule 22.08.2012
comment
Я уже могу обновить приложение django, когда твит поступает с использованием HTTP POST на URL-адрес, который я настроил на стороне django. Это скрипт, который постоянно прослушивает твиты, которые я пытаюсь интегрировать в приложение django. - person bodger; 23.08.2012
comment
Вы можете написать пользовательскую команду управления, которая вызывает ваш скрипт, и подключить ее вместе с runserver Ref- b-list.org/weblog/2008/nov/14/management-commands . Также это может помочь stackoverflow.com/questions/6532744/ - person Pratik Mandrekar; 23.08.2012