Очереди сообщений для управления внешней программой на 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/
Если я все еще что-то упускаю, вам нужно лучше объяснить, в чем именно заключается проблема, которую вы пытаетесь решить