我们对App Engine对Google Cloud Endpoints的支持感到非常兴奋.
也就是说我们还没有使用OAuth2,并且通常使用用户名/密码对用户进行身份验证,以便我们可以支持没有Google帐户的客户.
我们希望将API迁移到Google Cloud Endpoints,因为我们可以免费获得所有好处(API控制台,客户端库,健壮性......),但我们的主要问题是......
如何向我们之前在现有API中检查有效用户会话+ CSRF令牌的云端点添加自定义身份验证.
有没有一种优雅的方法来实现这一点,而无需在protoRPC消息中添加会话信息和CSRF令牌等内容?
我该如何选择Datomic的后端存储服务?
选择DynamoDB而不是Postgres是优先考虑的问题,还是每个选项都有不同的权衡?如果是这样,他们是什么?
我有一些看起来像这样的字符串:
"(8, 12.25), (13, 15), (16.75, 18.5)"
Run Code Online (Sandbox Code Playgroud)
我想将它们中的每一个转换为python数据结构.优选地,包含一对浮点值的元组的列表(或元组).
我可以做到这一点eval("(8, 12.25), (13, 15), (16.75, 18.5)"),给我一个元组元组,但我不认为天真评估外部信息将是一个明智的决定.
所以我想知道优雅的pythonic解决方案是什么样的.
我非常喜欢Tornado,我想在Python 3中使用它,尽管它是为Python 2.5和2.6版本编写的.
不幸的是,项目的来源似乎没有附带测试套件.如果我正确理解它的WSGI部分就不那么容易移植,因为它的规范尚未准备好用于Python 3(?),但我对Tornado的异步功能很感兴趣,所以WSGI兼容性不是我的主要关注点,即使这会很好.
基本上我想知道在尝试移植时要注意什么/注意或者是否已经有端口/分叉(我找不到任何使用谷歌或浏览github,虽然我可能错过了一些东西).
据我了解,Swift使用自动引用计数进行垃圾收集.
这让我回到了很多年前,当时我是一名COM程序员.
当对象超出范围时,VB6(以及之前)自动化了引用计数的过程,大多数时候这足以让程序员忘记内存管理.
但是,如果对象之间存在循环,.eg
Car->WheelsCollection contains pointers to wheels
Wheel->CurrentCar constrains a pointer to the car the wheel is currently installed on
Run Code Online (Sandbox Code Playgroud)
然后,当汽车的一个实例超出范围时,它不会被垃圾收集,因为汽车保持车轮活着,并且车轮保持车辆活着.
在Swift中使用哪些程序员模式或其他方式来避免或缓解此问题?
我使用http请求一次从一个API中获取数千个实体.作为管道中的下一步,我想将它们全部铲入数据库.
(->> ids
(pmap fetch-entity)
(pmap store-entity)
(doall))
Run Code Online (Sandbox Code Playgroud)
fetch-entity期望一个Stringid并尝试使用http请求检索实体,并返回Map或抛出异常(例如,由于超时).
store-entity期望a Map并尝试将其存储在数据库中.它可能会抛出异常(例如,如果Map它与数据库模式不匹配,或者它根本没有收到Map).
我的第一个"解决方案"是编写包装函数fetch-entity'并store-entity'捕获各自原始函数的异常.
fetch-entity'String如果http请求失败,则在失败时返回其输入,基本上传递id.这确保了整个管道继续运输.
store-entity'检查其参数的类型.如果参数是a Map(获取实体成功并返回a Map),它会尝试将其存储在数据库中.
如果存储到数据库的尝试抛出一个异常,或者如果store-entity'得到通过的String(ID),而不是Map将conj外部Vector的error_ids.
这样我以后可以error_ids用来计算出故障的频率以及哪些ID受到影响.
它并不觉得上述是实现我想要做的事情的明智方式.例如,我编写的方式store-entity'使用前面的管道步骤(fetch-entity')来补充函数,因为它根据先前的管道步骤是否成功而表现不同.
同时store-entity'了解外部Vector呼叫error_ids也感觉不对.
有没有一种惯用的方法来处理这种情况,你有多个管道步骤,其中一些可以抛出异常(例如因为它们是I/O),我不能轻易使用谓词来确保函数的行为可预测和在哪里我不想打扰管道,只是稍后检查哪些情况出错了?
python ×3
clojure ×2
asynchronous ×1
datomic ×1
eval ×1
postgresql ×1
python-3.x ×1
string ×1
swift ×1
tornado ×1
tuples ×1
wsgi ×1