小编tin*_*net的帖子

GAE/NDB的响应时间是多少?

我们目前正在构建一个小而简单的中央HTTP服务,将"外部身份"(如facebook id)映射到"内部(uu)id",这是我们所有服务中唯一的,以帮助进行分析.

"我们的堆栈"(flask + postgresql)中的第一个原型在一天内完成.但由于我们希望服务(几乎)永远不会失败并自动扩展,我们决定使用Google App Engine.

经过一周的阅读和尝试和基准测试后,这个问题出现了:

App Engine(使用NDB)的响应时间被视为"正常"?

我们的响应时间平均一直高于500毫秒,远远高于90%的1秒.

我在下面附上了我们代码的精简版,希望有人可以指出明显的缺陷.我们非常喜欢自动缩放和分布式存储,但我们无法想象500ms在我们的情况下确实是预期的性能.基于sql的原型响应速度更快(一致),使用免费的无缓存postgresql(即使使用ORM)托管在一个Heroku dyno上.

我们尝试了下面代码的同步和异步变体,并查看了appstats配置文件.它总是RPC调用(memcache和数据存储区)需要很长时间(50ms-100ms),因为总是存在多个调用(例如.mc.get()+ ds.get()+ ds.set( )写一个).我们还尝试尽可能地推迟到任务队列,没有明显的收益.

import json
import uuid

from google.appengine.ext import ndb

import webapp2
from webapp2_extras.routes import RedirectRoute


def _parse_request(request):
    if request.content_type == 'application/json':
        try:
            body_json = json.loads(request.body)
            provider_name = body_json.get('provider_name', None)
            provider_user_id = body_json.get('provider_user_id', None)
        except ValueError:
            return webapp2.abort(400, detail='invalid json')
    else:
        provider_name = request.params.get('provider_name', None)
        provider_user_id = request.params.get('provider_user_id', None)

    return provider_name, provider_user_id


class Provider(ndb.Model):
    name = ndb.StringProperty(required=True)


class Identity(ndb.Model): …
Run Code Online (Sandbox Code Playgroud)

google-app-engine python-2.7 app-engine-ndb

6
推荐指数
1
解决办法
1248
查看次数

在python列表中查找元组中的唯一元素

有没有更好的方法在python中执行此操作,或者更确切地说:这是一个很好的方法吗?

x = ('a', 'b', 'c')
y = ('d', 'e', 'f')
z = ('g', 'e', 'i')

l = [x, y, z]

s = set([e for (_, e, _) in l])
Run Code Online (Sandbox Code Playgroud)

我看起来有些难看,但是在没有编写复杂的"get_unique_elements_from_tuple_list"函数的情况下做了我需要的...;)

编辑:设置s的期望值(['b','e'])

python tuples list set

3
推荐指数
1
解决办法
6896
查看次数