1
keakon 2010-12-03 01:43:36 +08:00
latency越低越好(一般应该低于1000ms,我的不到100ms),QPS越高越好(不过钱也花得多)
|
3
darasion OP |
4
keakon 2010-12-03 14:20:08 +08:00
你可以用logging来记录时间,urlfetch属于service,可以参考这个来hook:
https://bitbucket.org/keakon/doodle/src/9830de2a181b/hook.py twitter 客户端确实没什么办法加快,不过web端的可以弄成ajax,在用户不知情的情况下去fetch |
5
lepture 2010-12-03 14:28:04 +08:00
@darasion
try this: http://code.google.com/appengine/docs/python/tools/appstats.html Appstats will list the cost for every action |
6
saga 2010-12-03 15:15:46 +08:00
我也不是很懂,但是某些语句会log出,xxx will create new instance之类的,设想一下,如果你只能有一个或者两个instance同时存在的限制,可能就有阻塞导致响应的延迟?瞎猜啦。
|
7
darasion OP |
8
keakon 2010-12-04 12:21:58 +08:00
要在main()里调用import hook并重设时间
不过如果不记录urlfetch次数和总时间,那就不需要重设时间,只import即可 https://bitbucket.org/keakon/doodle/src/86e5d334e718/blog.py#cl-64 服务名是'urlfetch' |
11
keakon 2010-12-05 02:05:58 +08:00
这个和你的实现有关,你得了解什么是App Caching
简单来说,你import hook后,只要这个instance没有消亡或清除App Caching,hook是可以重用而无需再次载入的 而hook.py中又import了apiproxy_stub_map,并且hook了其中的服务,因此这个hook是持续存在的,直到instance消亡或清除App Caching 此外main函数也是会被cache的,因此重用main函数时,它之外的语句不会重复执行 如果你import的位置不对,就有可能造成多次hook,也有可能造成没有hook,我也不知道你代码是咋样的,只能点到此了 |
12
darasion OP @keakon
我就是学着doodle的样子。 大概是这样: #一些 import ... import hook def main(): hook.db_count = 0 hook.db_time = 0 hook.db_start_time = 0 hook.request_arrive_time = time() application = webapp.WSGIApplication([ #一些handler啥的 ], debug=True) util.run_wsgi_app(application) if __name__ == '__main__': main() 发现在本地测试的时候没问题。每次都会log出来,但是传上去之后。https://appengine.google.com/logs 里边就找不到,或者找到很少。 |