Python应用程序与Web服务器通信?想法?

时间:2011-11-02 02:01:08

标签: python http sockets

我正在寻找一些网络开发建议。我对该地区相当新,但我确信那里有一些大师愿意放弃一些智慧。

目标:我有兴趣从我的个人网站托管网站控制我的计算机上的Python应用程序。我知道,这个问题之前已被问过几次,但在每种情况下,要求与我自己的要求有点不同。为了缩短这篇文章的篇幅,我将在几个要点中概括我的目标:

  • 个人网站由网络托管公司托管
  • 网站使用HTML,PHP,MySQL,Python和JavaScript,大部分内容都是我从头开始编码的
  • 用Python编码的应用程序将在我家中的PC上运行,并将与Arduino板进行通信
  • 该应用程序将从互联网接收命令以通过Arduino控制驱动,并将传感器数据传回现场(如温度)
  • 寻找双向,快速和安全的沟通
  • 保护网站和Python应用之间的连接是最理想的
  • 我不打算直接连接到Python应用程序,Web服务器必须充当'中间人'

到目前为止,我已经考虑过HTTP Post和HTML表单,使用套接字(Python应用程序将作为Web服务器运行),IRC bot以及读取/写入存储在Web服务器上的文本文件。

我也希望有一种方法可以与Python应用程序进行通信而无需刷新网页,可能使用AJAX或JavaScipt?也许用Flash?

有什么我不考虑的吗?我觉得我错过了什么。提前感谢您的建议!

1 个答案:

答案 0 :(得分:2)

大声思考我将如何开始这一点。首先,关于网站本身,你可以使用最容易的东西,或者你所处的环境。例如,一个基本的PHP页面可以做得很好,但如果你也可以使用Python运行一个网站,我更喜欢使用相同的语言。

那就是说,我不确定为什么你需要使用托管网站?鉴于您已经被迫在家中使用外部可访问的PC进行通信,为什么不直接在其上运行Web服务器(Apache,Nginx,甚至像CherryPy应该做的事情)?然后,该Web服务器可以与运行的python进程通信以控制您的Arduino(通过使用例如Python的xmlrpclib)。如果您通过托管公司运行,您仍然需要一些可以安全处理外部请求的进程......网络服务器非常擅长。只需自己运行即可为您提供所需的所有自由,并通过减少解决方案中的组件数量来简化操作。

您网站上的更新我会非常基本:您想要运行的命令可以通过调用相关的(xmlrpclib)调用在Web服务器的请求处理程序中处理。动态更新页面最好通过我认为的一些AJAX调用来完成。根据您的故事,这些更新很容易放在JSON对象中,适合定期更新页面的相关部分。