Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的企业平台,设计建议_Python_Django - Fatal编程技术网

Python中的企业平台,设计建议

Python中的企业平台,设计建议,python,django,Python,Django,我正在开始用Python设计一个比较大的企业平台,不知道你们能否给我一些建议,告诉我如何组织各种组件,以及哪些包可以帮助实现可伸缩性、可维护性和可靠性的目标 该系统基本上是一个从各种外部源收集数据的服务,每个外部源都有自己独立的应用程序。这些应用程序将轮询一个中央数据库,并获取已提交以在外部源上执行的任何请求 将有一个主网站和REST/SOAPAPI,也可以访问中央数据服务 我最初的想法是将Django用于web站点、web服务和数据访问层(使用其内置的ORM),然后外部源应用程序可以使用web

我正在开始用Python设计一个比较大的企业平台,不知道你们能否给我一些建议,告诉我如何组织各种组件,以及哪些包可以帮助实现可伸缩性、可维护性和可靠性的目标

该系统基本上是一个从各种外部源收集数据的服务,每个外部源都有自己独立的应用程序。这些应用程序将轮询一个中央数据库,并获取已提交以在外部源上执行的任何请求

将有一个主网站和REST/SOAPAPI,也可以访问中央数据服务

我最初的想法是将Django用于web站点、web服务和数据访问层(使用其内置的ORM),然后外部源应用程序可以使用web服务获取处理请求和保存结果所需的信息。 使用此方法将允许在相同或不同的计算机上运行多个服务应用程序实例,以平衡负载。有没有更优雅的方法来实现这一点?我听说过像MQ这样的消息传递系统,在这种情况下这样的系统会有好处吗

我的另一个想法是使用一个不基于Django的完全独立的数据服务,并使用某种远程处理或远程对象(它们存在于Python中)与数据模型交互。这里的缺点是,如果网站必须通过第二层推送所有数据请求,那么它的速度会慢得多


我很想听听其他开发人员如何以最灵活的方式实现这些目标。

我认为您的体系结构听起来不错。有一条评论是,SOAP在python社区中通常被认为很重要。您是否考虑过JSON或其他内容?到目前为止,大多数语言都有JSON库

远程运行代码的另一种可能性是(Python远程对象),它在Windows上运行良好,并且是跨平台的


在python中有两种编写服务的方法(例如,如果您的服务总是在一段时间后死亡,请确保它没有写入标准输出并填充其缓冲区),但是如果您正在考虑这一方法,那么我假设您已经掌握了这一点。:)

考虑用芹菜。它让你的网络应用程序尽可能少地执行任务,然后启动其他稍后将完成的任务。它在底层使用AMQP(RabbitMQ),但它是Python的,并且与Django配合得很好

(如果你想了解更多AMQP,我写了一些幻灯片:
)

我从未读过用Python完成的类似操作,我也对答案感兴趣。我个人是Python/Django的粉丝,但是你描述的东西听起来像是使用基于Java/OSGi的系统会更好。我绝对同意SOAP,我认为使用JSON构建REST接口是最好的方法。我读了一点关于pyro的书,它看起来很有趣,但我不确定这在ORM中会起什么作用。对于这些服务,我认为它们将在一个循环中运行,每隔一段时间检查一次新的请求,实际工作将在一个单独的线程中完成。Pyro和SQLAlchemy应该相处得很好,但是如果您正在分发处理,您的web服务上难道不会有DB,并通过JSON/SOAP进行通信吗?基本上是从数据库中提取数据,对其进行处理,然后将其发回,对吗?听起来很有趣。我一直在考虑使用CherryPy和一些ORM,从头开始构建东西,并打算研究AMQP来简化请求,因为我可能想用Python以外的东西编写实际的数据导入/导出服务。