Как вы соединяете свою прикладную среду (Django / Rails и т. Д.) С серверной частью, написанной на каком-то другом языке? - PullRequest
0 голосов
/ 12 марта 2011

Если в моем приложении есть части, требующие большого объема памяти и алгоритмические функции, я бы хотел реализовать их на C или Java.Как лучше всего подключить этот код к моему веб-приложению Django / (Rails, Merb и т. Д.)?

Ответы [ 3 ]

1 голос
/ 12 марта 2011

Вы пытались найти / написать интерфейс обработки очереди сообщений / инструкций для своего кода C / Java?Таким образом, вы можете передавать задания из вашего веб-приложения в очередь сообщений / инструкций, где ваш код C / Java будет собирать и обрабатывать сообщения.

Для Django у вас есть возможность использовать что-то вроде Сельдерей .

0 голосов
/ 14 марта 2011

Это зависит от того, как вы хотите с ним взаимодействовать и с чем вам удобнее всего. Я обычно заключаю эту функциональность в красивый HTTP-интерфейс, чтобы получить к нему доступ из Python (или любого другого языка). Практически на каждом языке есть HTTP-библиотеки, и довольно просто создать небольшой REST API. Как только он становится доступным по HTTP, он также позволяет вам использовать стандартные инструменты HTTP для отладки, кэширования и распределения нагрузки. Для обработки с более высокой нагрузкой, которая может извлечь выгоду из очереди, Celery / RabbitMQ являются мощными, а RabbitMQ может взаимодействовать с несколькими языками. ZeroMQ также может быть очень гибким и легким подходом.

Кроме того, если вы алгоритмически сложные части вашего приложения могут быть сформулированы в векторные операции, проверьте NumPy . Возможно, вам не придется покидать Python

0 голосов
/ 13 марта 2011

Для Python, говорящего на C / C ++, вы можете использовать:

Расширение Python с помощью C или C ++

Повышение

Идея в вышеупомянутых 2 решениях заключается в том, что вы напишите свой интенсивный для памяти код на C / C ++, а затем вызовете их из Python.

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