<p>你能更精确地定义“后端”吗?通常,在web开发中,我遵循MVC的结构,其中我的“前端”、html/css/js和处理显示的代码都与我的“后端”模型(业务对象和数据持久性;即数据库)紧密耦合。在</p>
<p>我喜欢Django的模型/视图/模板方法:</p>
<p><a href="http://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names" rel="nofollow noreferrer">http://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names</a></p>
<p>但是,您还没有真正定义“后端”的含义,因此很难就设计模式给出建议。你说你对Python很有经验,你以前开发过数据库驱动的web应用程序吗?在</p>
<p><strong>更新</strong></p>
<p>根据你的评论,我帮不上什么忙,因为我没有太多的经验做这样的“后台”。然而,考虑到您是如何从web上获取资源的,您的延迟/吞吐量将相当高。因此,为了提高整体效率,您需要一个能够以相当高的并发性运行多个线程或进程的东西。我建议你看看这个帖子上的答案(并搜索类似的答案):</p>
<p><a href="https://stackoverflow.com/questions/2360291/concurrent-downloads-python">Concurrent downloads - Python</a></p>
<p>特别是,我发现递归web服务器的示例和下面的示例可能是解决方案的一个非常好的开端:</p>
<p><a href="http://eventlet.net/doc/examples.html#recursive-web-crawler" rel="nofollow noreferrer">http://eventlet.net/doc/examples.html#recursive-web-crawler</a></p>
<p>至于将这个想法转化为一个健壮的/连续的过程,这在很大程度上取决于你的平台和你处理错误的能力。基本上:</p>
<ul>
<li>在循环中运行它,并确保处理任何可能抛出的错误</li>
<li>让某种类型的进程监视您的工作进程,以便在它挂起或死亡时终止/重新启动它</li>
<li>确保nagios停止监视(如果你的解决方案停止工作)</li>
</ul>
<p>保持事物“健壮”的最好方法之一是使它们尽可能简单(而不是简单化)。如果你所做的只是从web上获取信息,以某种方式进行解析,然后将这些信息存储在数据库中,那么就尽量让这个过程保持简单。不要为了使它更健壮而增加不必要的复杂性。如果你最终得到一个200行脚本,你就可以做太好了!在</p>