微信给的 5 秒不够响应怎么办? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cloverstd
V2EX    Python

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

  •  
  •   cloverstd
    cloverstd 2013 年 3 月 21 日 5294 次点击
    这是一个创建于 4760 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我用 web.py 作为 web 构架来响应微信公众平台,做一个可以帮助同学查询信息的程序。

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

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

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

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

    5s 会不会太少,还是我代码复杂,导致程序运行效率低?
    13 条回复    1970-01-01 08:00:00 +08:00
    silverty
        1
    silverty  
       2013 年 3 月 21 日
    先判断urllib访问学校网站的响应时间有多少,可能是学校网站的运行效率太低了。
    cloverstd
        2
    cloverstd  
    OP
       2013 年 3 月 21 日
    @silverty
    我测试了下直接打开网站并且 read(),时间在 1s 以下
    然后测试了下登录并且 read(),时间从 1s 以下到 10s 都有

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


    @nsxuan 不是的


    @vigoss 但是响应只有一次,而且只有 5s 啊
    cloverstd
        9
    cloverstd  
    OP
       2013 年 3 月 22 日 via Android
    @lbj96347 学号有规律,密码是生日,这个不知道啊
    leveraging
        10
    leveraging  
       2013 年 3 月 22 日 via Android
    @cloverstd 你不是说是2秒到10秒么?存下队列后超时就留下再尝试。

    还是我理解错了,微信我不清楚。是只能在客户端发出指令的5秒内做出响应么?能不能记录下客户端的id什么的之后再发结果。第一次先发个正在查询中,前后会再发一条
    cloverstd
        11
    cloverstd  
    OP
       2013 年 3 月 22 日 via Android
    @vigoss 用户发微信,微信公众平台收到后把消息 POST 我的服务器,这个连接只持续 5s,所以说我服务器端处理数据的时间只有 5s,微信又不能主动推送
    loveminds
        12
    loveminds  
       2013 年 3 月 22 日 via iPhone
    这个服务器尽量放在离校园网近的地方
    我不知道Host700是BGP还是单线接入
    但不建议使用延迟过大(大于等于75)ms的机器
    如果你们学校有电信/联通的外网出口的话,尽量选择就近的合适线路机器
    如果仅有赛尔,那就需要另行测试
    thursday
        13
    thursday  
       2013 年 3 月 22 日
    您的查询请求已经提交。由于校方服务器问题。大约需要1分钟后才能处理结束。请一分钟后 重新提交查询。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3988 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:17 PVG 08:17 LAX 17:17 JFK 20:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86