微信给的 5 秒不够响应怎么办?

2013-03-21 23:16:57 +08:00
 cloverstd
我用 web.py 作为 web 构架来响应微信公众平台,做一个可以帮助同学查询信息的程序。

程序主要流程是
同学发来学号空格生日 -> 解析 xml 取得学号和生日 -> 用 urllib2 向学校网站查询 -> re 解析获得需要的信息 -> 返回给同学

之前我用 Nginx + uWSGI 在 HOST700 的 128MB VPS 上运行过一段时间,一切正常,但是后来就发现总是得不到响应了,刚开始以为自己配置错误或者内存太小了,后来发现不是的,是因为响应时间不够。

今天放在 SAE 上试了下,发现有时第三阶段到第四阶段的时间是 2s,有时是 10+s

最蛋疼的是学校那个网站上有一段判断访问者状态的 viewstate 的值每天都在变化,我之前都是先从登录页面用 urllib 和 re 动态的获取这段值,响应时间也是够的,现在我直接把这段值写在代码里,响应时间还是不够,请问下有没有什么解决办法?

5s 会不会太少,还是我代码复杂,导致程序运行效率低?
4612 次点击
所在节点    Python
13 条回复
silverty
2013-03-21 23:26:33 +08:00
先判断urllib访问学校网站的响应时间有多少,可能是学校网站的运行效率太低了。
cloverstd
2013-03-21 23:59:40 +08:00
@silverty
我测试了下直接打开网站并且 read(),时间在 1s 以下
然后测试了下登录并且 read(),时间从 1s 以下到 10s 都有

学校网站本来就是个渣,如果是学校网站效率太低,请问有没有什么解决方法?
leiz
2013-03-22 00:13:41 +08:00
把从学校网站查到的信息存下来,缓存或者直接存本地服务器
for4
2013-03-22 00:22:18 +08:00
让同学多查询几次, 第一次触发查询任务并入库. 第二次直接从自己的数据库读取.
没有太好的办法解决的...
nsxuan
2013-03-22 02:23:29 +08:00
正方教务?
lbj96347
2013-03-22 03:09:41 +08:00
爬虫的东西,的确会受到学校网络的限制。建议如果学号这些东西有规律的话,根据规律,把相同班级的一些同学拿到的基本数据存下来,在自己的服务器上查询就快好多了。最糟糕就是选修课的情况,如果是选修课的话大家都不同。你又必须去爬...
vigoss
2013-03-22 07:56:22 +08:00
异步执行任务,每来一次请求先加入队列。然后再多次尝试。高性能必须依赖异步
cloverstd
2013-03-22 08:07:53 +08:00
@for4
@leiz
我正打算这样做,把每个人的微信号和相关帐号绑定起来,每日后台更新缓存到数据库


@nsxuan 不是的


@vigoss 但是响应只有一次,而且只有 5s 啊
cloverstd
2013-03-22 08:08:56 +08:00
@lbj96347 学号有规律,密码是生日,这个不知道啊
vigoss
2013-03-22 08:21:12 +08:00
@cloverstd 你不是说是2秒到10秒么?存下队列后超时就留下再尝试。

还是我理解错了,微信我不清楚。是只能在客户端发出指令的5秒内做出响应么?能不能记录下客户端的id什么的之后再发结果。第一次先发个正在查询中,前后会再发一条
cloverstd
2013-03-22 08:27:06 +08:00
@vigoss 用户发微信,微信公众平台收到后把消息 POST 我的服务器,这个连接只持续 5s,所以说我服务器端处理数据的时间只有 5s,微信又不能主动推送
loveminds
2013-03-22 09:42:22 +08:00
这个服务器尽量放在离校园网近的地方
我不知道Host700是BGP还是单线接入
但不建议使用延迟过大(大于等于75)ms的机器
如果你们学校有电信/联通的外网出口的话,尽量选择就近的合适线路机器
如果仅有赛尔,那就需要另行测试
thursday
2013-03-22 10:03:15 +08:00
您的查询请求已经提交。由于校方服务器问题。大约需要1分钟后才能处理结束。请一分钟后 重新提交查询。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/63669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX