1
julia 2010-12-19 16:58:07 +08:00
学习
|
2
jeeson 2010-12-19 21:27:03 +08:00
加上时间戳,最后的验证/使用时间,多少时间内的不需要再次验证,这样可以减少验证数量
否则,如果你的数据够多,短时间内突发访问,对方(twitter)的服务器要遭殃。万一对方来不及5秒-10秒内响应(URLFetch timeout),你的队列会堵塞、重试 就token数据而言,需要专门验证有效性吗?我觉得使用时发现无效做标志或者清除就好。也可能我没明白 |
3
darasion OP @jeeson 如果使用时验证,响应可能会很慢。
urlfetch 相对别的服务特别慢。比访问datastore数据似乎要慢很多。所以我认为使用时应尽量减少使用时访问 twitter api 的次数。 另外全世界访问 twitter api 的应用那么多,一定不会在乎我这一个小小的应用,如果真的因为我造成twitter服务器遭殃,那我就太荣幸了。呵呵。 再说,任务队列是可以通过 queue.yaml 调整执行频度的,GAE限制死了,不必担心什么太多突发请求。每次入队的任务数量也可以通过 FetchHandler 来调整每次取出实体的数量来限制,这样队列中总能保持有限数量的任务而不会冒漾。 触发批量清理过程,可以设置cron来找个没人访问的时候进行,或者自己手动也可以。 |
4
jeeson 2010-12-19 22:38:56 +08:00
@darasion 我不确定是否理解你的意思
如果是OAuth,除非用户取消了授权,否则会一直有效。而如果无效,访问的时候,会得到一个401 Unauthorized的错误,把这个token做无效标识就好 URLFetch 是远程请求,当然很慢 :) |
5
darasion OP @jeeson 光是判断 401 不行。
因为如果一个用户 protect 了它自己的推。而持有 token 的用户并没有通过这个用户的验证,那么这个这个持有token的用户用他的 token 访问 statuses/user_timeline 的时候仍然会返回 401 。即便这token是有效的。 所以并不是只有当 token 无效时返回才返回 401 。 |
6
jorakura 2010-12-20 10:38:07 +08:00
> 1、taskqueue 限量很少(好像是10万次调用),如果实体很多很多,太容易超限了。我只测试了几次就用掉了1%。
我这边显示:20,000,000 |
8
Livid MOD MapReduce。
V2EX 用来清理数据的办法,源代码里有。 |