将数据从Django传递到c++应用程序并返回
Passing data from Django to C++ application and back
我们正在创建一个交易应用程序,其中后端完全是c++(使用QuickFix引擎)。我们想在这个后端之上用Django构建一个web应用程序,用户可以在其中下订单。Django (python)和c++应用程序都将运行在它们自己的进程和地址空间中。你认为将命令/消息从Django传递到c++的最好方法是什么?
另外,这是一个交易应用程序,所以延迟是最大的问题。所以,我不想把订单从Django中放入数据库,然后从c++应用程序中获取。
我目前正在考虑通过共享内存或其他IPC机制进行操作。这是个好主意吗?
你必须使用一些IPC方法。这里没有提到的一个问题是让c++进程监听套接字。这将增加灵活性(以轻微的速度成本),进程甚至不需要在同一台机器上。
我一直在做类似的事情,来自c++,但想用python写UX。我的计算后端是c++,我为UX编译了一个python模块并使用flask生成html。我的c++和python生活在同一个过程中,所以我还没有在实践中解决你的核心问题。
我给你的一个建议是把所有IPC的东西都用c++写,用Boost.Python用c++写一个小的python模块。这将让python进程在python世界中完成95%的工作,但给你一个位级的信心,我想作为一个c++开发人员,为你发送到c++的数据。提振。对我来说,Python使连接c++和Python web框架变得轻而易举。
您必须提出一个现有的协议或创建您自己的协议,以允许c++和Python之间的通信。我认为最简单的方法是使用一些IPC,如zero - Ice或CORBA。或者,你可以在Python中加入本地c++代码,然后在Django中使用它,这也可以使用QuickFIX。
如果你真的关心延迟(至少毫秒很重要,而不是纳秒)-你根本不应该使用QuickFIX或Python。
我将使用zeromq作为IPC
我可能会选择JSON-RPC之类的东西,并通过本地套接字或命名管道进行通信。
共享内存更快,但如果你必须自己做的话,要正确处理就更难了(这意味着并发性和锁定,在我看来,应该尽可能避免。)
这取决于消息大小和延迟需求。你也可以尝试一种可以在共享内存上工作的IPC机制,就像vlad在下面的评论中提到的那样。
(请注意,如果将来需要对系统进行集群,那么拥有一个可以依赖于管道/套接字的ipc系统可能是一件好事)。
你应该/可以使用带有消息代理的微服务架构,这样你就可以轻松地将你的应用程序彼此连接起来。
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?