Очереди сообщений для управления внешней программой на Python через Django

Я использовал в предыдущем проекте ZeroMQ для отправки сообщений между двумя разными программами Python на разных серверах. Теперь у меня есть программа, для которой я хотел бы использовать Django в качестве внешнего интерфейса.

В большинстве случаев поиск по очередям сообщений и python - это Celery и RabbitMQ. Но это не похоже на то, что я ищу. Похоже, что Celery пригоден для создания задач в приложении Django, их обработки и записи результатов обратно в Django.

То, что я ищу, - это решение, которое позволяет мне, когда я создаю или удаляю новый элемент модели, чтобы отправить сообщение другой программе на Python. Когда другая программа на Python получает сообщение об ошибке, я хочу отправить сообщение обратно в Django и создать новый элемент модели ошибок.

Есть ли хороший способ сделать это? То, что я мог сделать, это использовать разные методы для отправки и получения от Django. Я мог бы отправить простой UDP моей другой программе и отправить материал обратно в django через HTTP API. Но я думаю, что было бы лучше иметь какую-то форму системы обмена сообщениями, которая обрабатывает это и обеспечивает получение сообщений.

1 ответ

Не уверен, где вы застряли, поэтому я постараюсь охватить все.

В проекте, над которым я сейчас работаю, мы используем API и rabbitmq для передачи сообщений.

У нас есть процесс Python, не относящийся к django, который прослушивает очередь rabbitmq, поэтому, когда Django должен с ней поговорить, мы просто закачиваем сообщения в формате JSON в очередь, и процесс забирает сообщения и обрабатывает их.

На самом деле вы можете использовать модели django и другие API с приложением, отличным от django. Если это то, что вы хотите сделать, вот ссылка для начала

http://blog.gabrielsaldana.org/using-django-models-in-external-python-scripts/

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

Чтобы делать вещи каждый раз, когда модель создается или сохраняется, вы хотите посмотреть на сигналы Django.

https://docs.djangoproject.com/en/1.9/topics/signals/

Если я все еще что-то упускаю, вам нужно лучше объяснить, в чем именно заключается проблема, которую вы пытаетесь решить

Другие вопросы по тегам