设计存储和处理文件的应用程序

时间:2010-06-16 20:52:41

标签: python django

我的任务是编写一个应用程序,作为其他应用程序提供的文件(通常是文档格式)的中央存储点。它还需要接受诸如“文件395需要X格式的副本”之类的命令,此时一些工作被卸载到第三方应用程序。我无法为此制定策略。

我想让设计尽可能简单,所以我希望尽可能避免大量的额外框架或线程等技术。

客户端应该是Web应用程序(例如,一个是从我们的客户接收文件的django应用程序;其他应用程序尚未实现)。它将运行的平台很可能是Linux上的Python,除非我有强烈的论据要使用其他东西。

一开始我认为我可以在文件名中填写我想要传达的信息,然后让我的应用程序解析文件名以确定它需要做什么,但事实证明这对我的信息量来说太不灵活了。我意识到我需要提供。

另一个想法是将FTP与用作通信媒介的数据库配对(客户端上传文件并使用命令作为表中的行更新数据库)但我不喜欢这个想法,因为添加命令(已知)看来它需要添加代码以及更改数据库模式。它还会使我的客户必须使用的界面变得混乱。

我查看Pyro让应用程序更直接地进行通信,但我不喜欢为此目的运行额外的名称服务器的想法。我也没有看到在这个框架内进行文件传输的好方法。

我正在寻找的是适用于我的问题的技术和/或技术。在最简单的层面上,我需要能够接受文件和消息。

3 个答案:

答案 0 :(得分:3)

您需要研究的是BPEL Rules engine。以下是open source rules engines written in Java的列表。其他语言也有其他选择,甚至Python。这绝对不是你想要重新创造自己的东西。这个问题领域变得非常复杂,任何“简单”的解决方案都会对可伸缩性和性能产生天真的态度,而且会很快被抛弃。

答案 1 :(得分:0)

您应该能够以相当REST的方式使用HTTP PUT和GET操作来实现它。由于以下几个原因,这将非常有用:

  • 能够直接从内部网站链接到存储
  • 轻松测试
  • 有许多库可以帮助您实现此
  • 无需担心客户端应用程序使用什么平台

我建议实现它,以便以特定格式获取文件就像导航到:

一样简单

http://www.myserver.com/filestore/documents/docname&format=xxx

在服务器中,我当然会使用已转换文件的文档,文件格式和缓存版本的数据库。我会根据需要调用第三方翻译,即当请求以特定格式提交文档并且文档尚未在缓存中时。

答案 2 :(得分:0)

您的问题似乎为RESTful Web应用程序而烦恼。至于什么框架可以让你最好地实现它,有些人甚至喜欢Django(可能有django-rest-interface),其他人更喜欢轻量级框架用于此目的 - 请参阅this SO question的一些讨论。另一个可能没有提到的框架是RIP - 不幸的是,它目前似乎没有被维护(实际上,它与SVN存储库的链接是悬空的),但可能值得从pypi下载the sources,看看,也许适应它。