Python应用与web服务器通信?有什么建议?

2 投票
1 回答
2791 浏览
提问于 2025-04-17 05:28

我想请教一些关于网页开发的建议。我对这个领域还比较陌生,但我相信一定有一些高手愿意分享他们的经验。

我的目标是:我希望能通过我个人的网站来控制我电脑上的一个Python应用程序。我知道这个问题之前问过很多次,但每次的需求都和我不太一样。为了让这篇帖子简洁一些,我把我的目标总结成几个要点:

  • 我的个人网站是由一个网络托管公司提供的
  • 网站使用了HTML、PHP、MySQL、Python和JavaScript,大部分代码都是我自己从头写的
  • 一个用Python编写的应用程序将在我家里的电脑上运行,并与一个Arduino板进行通信
  • 这个应用程序将从互联网接收命令,通过Arduino控制设备,并将传感器数据(比如温度)传回网站
  • 希望这种通信是双向的、快速的,并且安全
  • 确保网站和Python应用之间的连接是最理想的
  • 我不想直接连接到Python应用,网络服务器必须充当“中介”

到目前为止,我考虑过使用HTTP Post和HTML表单,使用套接字(Python应用作为网络服务器运行),一个IRC机器人,以及读取/写入存储在网络服务器上的文本文件。

我还希望能有一种方式与Python应用进行通信,而不需要刷新网页,也许可以使用AJAX或JavaScript?或者用Flash?

我是不是漏掉了什么?我感觉还有些东西没有考虑到。提前感谢大家的建议!

1 个回答

2

我在想,如果我来做这个项目,我会怎么开始。首先,关于网站本身,你可以选择对你来说最简单的方式,或者根据你所在的环境来决定。例如,简单的PHP页面就可以很好地工作,但如果你能用Python搭建一个网站,我更倾向于在整个项目中使用同一种语言。

话说回来,我不太明白你为什么需要使用托管的网站?既然你已经需要在家里有一台可以外部访问的电脑来进行通信,那为什么不直接在那台电脑上运行一个网络服务器呢?比如Apache、Nginx,或者像CherryPy这样的东西都可以。这个网络服务器可以和运行中的Python程序进行通信,来控制你的Arduino(比如使用Python的xmlrpclib)。如果你通过托管公司来运行这些东西,你仍然需要一个能够安全处理外部请求的程序……而网络服务器在这方面做得很好。自己运行的话,你可以拥有所有想要的自由,同时也简化了你的解决方案,因为减少了组件的数量。

至于你网站上的更新,我建议保持简单:你想要执行的命令可以在网络服务器的请求处理程序中通过调用相关的(xmlrpclib)方法来处理。我认为动态更新页面最好是通过一些AJAX调用来实现。根据你的描述,这些更新可以很容易地放在一个JSON对象中,适合定期只更新页面中相关的部分。

撰写回答