【问题标题】:Hosting a non-trivial python program on the web?在网络上托管一个重要的 python 程序?
【发布时间】:2011-04-13 23:52:32
【问题描述】:

我是这方面的新手,所以请原谅我的无知。

我有三个问题:

  1. 在线托管 python 程序的最佳(最快、最简单、无头痛)方式是什么?

    我目前正在查看 Google App Engine 和 Web Frameworks for Python,但所有选项都有些难以接受。

  2. 哪些 gui/viz 库可以毫无问题地转移到网络应用环境?

    为了简单,我愿意牺牲一些性能。

    (Google App Engine 不能做 C 库,所以这造成了两难。)

  3. 我在哪里可以了解更多关于在本地运行程序与在服务器上连续运行程序并接受来自多个用户的请求的信息?

目前我有一个只使用标准 Python 库的工作 Python 程序。它目前使用大约 2.7gb 的内存,但随着我增加数据集,我预测它将使用接近 6gb 的内存。我可以在我的个人机器上运行它,一切都很好。我想继续在我的家用机器上进行前端开发,稍后再实现网络应用程序。

这是我以前的相关post

【问题讨论】:

  • 这真的很模糊——“程序”涵盖了从“hello world”网络应用程序到核反应堆控制程序的所有内容。你的“程序”的性质是什么?它必须持续运行,还是可以写成基于请求的?它需要与用户进行什么样的互动?
  • 这是一个可搜索的数据库,用户的查询将返回一个子图,如果他们选择与之交互,该子图可以展开或折叠。它需要持续运行,因为构建甚至加载泡菜需要超过 60 秒。如果显示可视化不可行,则仅返回文本是另一种选择,但构建索引仍需要大量时间。
  • 为什么需要将整个图形存储在内存中?您不能以一种实用的方式将其序列化到数据存储区吗?
  • @Nick,我一直在阅读 web2py 和 App Engine,它开始变得有意义。 (我会向任何有类似问题的人推荐 web2py 的书/教程)现在我正在尝试弄清楚如何运行/显示一个类似于带有 web2py 的 python/html 混搭的画布的 gui 界面以供查看。

标签: python google-app-engine user-interface web-applications visualization


【解决方案1】:

根据您对服务器管理的了解,您应该考虑使用专用服务器。我正在与 Godaddy 共享服务器上的一些数据上运行一些带有 Numpy、Scipy、Pandas 等的自定义 Python 模块。我编写的一个程序需要 120 秒才能完成。最近我们切换到专用服务器,现在需要 2 秒。共享环境使用 CGI 运行 Python,我在专用服务器上安装了 mod_python。

使用专用服务器允许对服务器进行完全控制(包括 root 访问),从而允许编译和/或安装任何东西。这有点贵,但如果你用你的东西赚钱,那可能是值得的。

另一种选择是使用http://www.dyndns.com/ 之类的东西,您可以在自己的机器上托管域。

话虽如此,也许有一些答案:

  1. 这取决于您的要求。约 4gb 的 RAM 可能需要专用服务器。你所问的不一定是一件容易的事,所以不要害怕弄脏你的手。

  2. 不明白你的意思。

  3. 服务器只是响应请求的计算机。在专用服务器(我一直提到)上,您就像在本地一样在 Unix(或 Windows)环境中操作。您使用软件(例如 Apache Web 服务器)来服务客户端请求。我的投票是 mod_python。

【讨论】:

  • 我通过这个company 有一个个人网站,但我认为这不能胜任这项任务。或者,我的项目可以由我的大学或我从中获取数据的网站托管(假设他们会感兴趣)。 \n\n 无论如何,在 2 日,我要求 Python GUI 库建议来构建可以在网络上运行的 UI。
  • @wnewport:所以托管不是问题。您可以访问 Unix 的计算机吗?当您坚持说时,您是指每 X 分钟还是每秒钟?您可以编写程序并将其放在 cron 上以每隔一段时间运行一次。谷歌“模型视图控制器”。它是一种流行的编程范式,可能是一个很好的框架。
  • 好的,是的,MVC 就是我想要的。我会研究那个。谢谢!
【解决方案2】:

这比专用服务器更令人头疼,但它应该更接近您使用 Amazon EC2 实例的需求。

http://aws.amazon.com/ec2/#instance

他们的超大实例应该足以满足您的需要,并且您只在需要时才打开实例,这样您就不会像使用相同的专用服务器那样支付巨额费用尺寸。

【讨论】:

    【解决方案3】:

    那里有一些不错的基于 javascript 的可视化工具包,因此您可以对应用程序进行建模以返回原始 (json) 数据并在客户端上呈现。 我可以提到 d3.js http://mbostock.github.com/d3/ 和 JavaScript InfoVis Toolkit http://thejit.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2023-04-01
      • 1970-01-01
      • 2011-05-10
      • 2019-01-10
      • 1970-01-01
      • 2013-10-16
      相关资源
      最近更新 更多