ecl*_*pse 4 c++ python django json
我有一些框架在 C++ 和一个基于 django 的 Web 应用程序中执行特定任务。这个想法是启动这个框架,从中接收一些数据,发送一些数据或请求并检查它在某个时期的状态。
我正在寻找最好的沟通方式。两个应用程序都运行在同一台服务器上。我想知道 C++ 中的 json 服务器是否是个好主意。Django 会向这个服务器发送一个请求,服务器会解析它,并委托一个工作线程来完成任务。几乎所有需要发送的数据都是类似字符串的。其他数据将存储在数据库中,因此没有问题。
JSON 是个好主意吗?也许你知道一些更好的 C++ 和 django 之间本地通信的机制?
对于数据序列化来说,JSON 似乎是一个足够合理的选择——它擅长处理字符串,并且在 python 和 C++ 中都有用于编码/解码 JSON 的现有库。
但是,我认为您更大的问题可能是您用于在客户端和服务器之间传输 JSON 的传输协议。这里有一些选项:
你可以在你的 C++ 应用程序中构建一个 HTTP 服务器(我认为这可能就是你问题中“JSON 服务器”的意思),这会工作得很好,尽管实现起来可能有点痛苦,除非你掌握了一个可以为您处理繁重工作的图书馆。
另一种选择可能是使用0MQ库在客户端和服务器之间发送 JSON(或其他)消息。我认为这可能比实现完整的 HTTP 服务器容易得多,并且 0MQ 有一些进程间通信代码,可能比通过网络发送内容要快得多。
第三种选择是将 C++ 作为独立应用程序运行,并通过 stdin 或命令行参数将数据传递给它。这可能是最简单的做事方式,尽管可能不是最灵活的。如果您要走这条路,您最好按照 ablm 的建议构建一个 Python/C++ 绑定。
或者,您可以尝试构建某种基于redis或其他数据库系统的作业队列。这个想法是,您的 Django 应用程序将一些描述作业的 JSON 放入作业队列中,然后 C++ 应用程序可以定期轮询队列,并使用单独的 Redis 条目将结果传递回客户端。这样做的优点是,您可以轻松地让多个“工作人员”以最小的努力从作业队列中读取数据。
几乎肯定还有其他方法可以解决这个问题,但这些是立即浮现在脑海中的方法。
如果您的要求保证C++应用程序始终与DjangoWeb 应用程序在同一台机器上,请C++通过将代码转换为共享库并在其周围包装 python 来包含代码。就像这个从 python 调用 C/C++ 一样?
如果您要进行远程调用并且代码需要跨机器通信,则 JSON 和其他序列化是有意义的。
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |