从Python程序接收数据以在网页上动画化对象

0 投票
2 回答
769 浏览
提问于 2025-04-16 11:42

大家好,StackOverflow的朋友们!

我不确定你们有没有尝试过这个,但我想实现的功能大概是这样的:

  • 一个Python程序不断地向我的网站发送数据
  • 利用这些数据进行计算,然后让网站上的图片动起来

所以我有几个问题:

  1. 我应该用什么方法让Python和网站进行沟通?越简单越好(我试着了解Django,结果头都大了)
  2. 用JavaScript移动我的图片是最好的选择吗?还是说Flash更好?
  3. 如果Flash更好,那我能把Python的输入传给Flash吗?

2 个回答

0

图片并不是直接在“你的网站”上显示,而是在“用户的浏览器”中显示的。

浏览器需要向你的网站请求动画的信息,而你的网站又需要从其他地方获取这些信息。理想情况下,你的网站会把这些数据缓存起来,这样20次浏览器的请求就只需要1次网站的请求。

  • 这些信息更新得有多快?
  • 这些信息来自哪里?是可以在网络服务器上运行的服务吗?
  • 浏览器需要多频繁地更新?

你应该了解一下AJAX(这是一种让浏览器可以从网站异步请求数据的技术)。

0

基本上有两种方法可以做到这一点。

  • 轮询 - 简单来说,就是浏览器一直在问服务器:“你有没有新数据给我?”你可以用Ajax来实现。所有主要的JavaScript库都有简单易用的Ajax功能。
  • 实时 - 用JavaScript有两种方法可以做到这一点。第一种是Comet方法,通常意味着长轮询(你向服务器请求一个页面,服务器不会立即关闭连接,而是会持续发送数据)。这方法有点麻烦,但能用。另一种是使用HTML5的WebSockets,它在浏览器和服务器之间建立了一个真正的TCP连接,可以用来发送数据。

是的,你可以使用Flash,它有类似于WebSockets的功能。我觉得它可能更强大,但别太当真。不过你得学习Flash,并可能需要在Flash中制作图像或动画。

该用哪种方法?

在HTML5之前,网页并不真的打算有实时连接,所以HTML5之前的所有方法或多或少都是一些变通办法,有时处理起来会很麻烦,并且可能会影响性能。

如果你只是随便玩玩,我建议用WebSockets。不过你需要一个支持它们的现代浏览器。如果需要支持旧版浏览器,就得用其他方法。

Flash可以用,但需要插件,并且很可能在移动设备上无法使用。它也是一种新语言,你需要学习和支持。有些人可能会把它屏蔽。

Python

如果你选择了上述某种方法,只需在谷歌上加上“python”这个关键词就行了。Python有很多相关的库,示例也不少。

最简单的实现可能是Ajax轮询,因为你只是在请求一个网页。只需找一个简单的Python网页框架,比如Bottle,你就能很快上手。

Comet也相对简单,但可能会遇到保持连接长时间打开的问题,尤其是当你有多个这样的连接时。你应该找一个现成的Comet实现,而不是自己去解决这个问题。可以看看这个 - Python Comet Server

WebSockets和Flash需要你用Python写一个单独的服务器或脚本来提供数据。网上有一些现成的,你只需把你的逻辑接入进去就行。

撰写回答