小编Chr*_*row的帖子

RESTful幂等

我正在使用ROA(面向资源的架构)设计RESTful Web服务.

我正在尝试找出一种有效的方法来保证在服务器指定资源密钥的情况下创建新资源的PUT请求的幂等性.

根据我的理解,传统方法是创建一种类型的事务资源,例如/ CREATE_PERSON.用于创建新人员资源的客户端 - 服务器交互将分为两部分:

步骤1:获取用于创建新PERSON资源的唯一事务ID :::

**Client request:**
POST /CREATE_PERSON

**Server response:**
200 OK
transaction-id:"as8yfasiob"
Run Code Online (Sandbox Code Playgroud)

第2步:使用事务ID :::在保证唯一的请求中创建新的人员资源

**Client request**
PUT /CREATE_PERSON/{transaction_id}
first_name="Big bubba"

**Server response**
201 Created             // (If the request is a duplicate, it would send this
PersonKey="398u4nsdf"   // same response without creating a new resource.  It
                        // would perhaps send an error response if the was used
                        // on a transaction id non-duplicate request, but I have
                        // control over the client, so I can …
Run Code Online (Sandbox Code Playgroud)

rest idempotent

5
推荐指数
1
解决办法
4461
查看次数

约会和订单项

我正在构建一个管理应用程序,以帮助管理我的移动汽车细节公司(并希望其他人).我正在努力弄清楚如何建模一些数据.

这个问题与我发布的上一个问题有关,但我已经复制了以下相关信息: 数据库设计 - 谷歌应用引擎

在这个应用程序中,有"约会"和"行项目"的概念.

约会是指员工需要提供服务的地点和时间.

订单项是服务,费用或折扣及其相关信息.可能进入约会的订单项示例:

Name:                          Price: Commission: Time estimate   
Full Detail, Regular Size:        160       75       3.5 hours 
$10 Off Full Detail Coupon:       -10        0         0 hours 
Premium Detail:                   220      110       4.5 hours 
Derived totals(not a line item): $370     $185       8.0 hours

在我之前的此应用程序实现中,行项目包含在一个约会中.这在大多数时候都很好,但有时会引起问题.一个例子是如果一个约会因为下雨而中途中断,技术人员必须在第二天回来并完成.这种情况需要对同一个订单项进行两次约会.在这种情况下,我只是通过将第二个约会上的"行项目"设置为"完成"这样的内容来稍微捏造数据,然后成本为0美元.

在下一个版本中,我正在考虑启用行项目与多个约会匹配,表格结构如下所示:

Appointment
 start_time
 etc...

Line_Item
 appointment_Key_List
 name
 price
 etc...
Run Code Online (Sandbox Code Playgroud)

这种结构的一个普遍问题是它很复杂,我甚至不确定它是否适合将一个订单项与多个约会相匹配.如果行项目只能作为一个约会的一部分,那么我实际上可以在每个约会中放置一个行项目列表,当我得到约会时,我已经获得了行项目.

一个更具体的问题是我正在使用谷歌应用引擎,如果我想查询一组约会及其相关的订单项,我必须首先查询约会集,然后再对该行进行第二次查询使用IN运算符测试是否有任何Line_Item的约会密钥落入从上一个查询返回的约会密钥集中的项目.如果我有超过30个密钥要求我对查询进行分片,则第二个查询将失败.我可以对数据进行非规范化以避免这种复杂而广泛的读取查询,并且我可能不得不在某种程度上反规范化,但我宁愿在适当的地方避免复杂性.

我的问题是这种情况通常是如何建模的?是否适合将订单项与多个约会配对,或者将每个约会的订单项拆分为单独的约会是正常的,例如"2天工作的上半部分"和"2天工作的下半部分" ".类似的成功应用如何做到这一点?在这种情况下,有哪些经验法则?哪些实施变得不那么成问题?

谢谢!

java google-app-engine database-design appointment

5
推荐指数
1
解决办法
827
查看次数

Google App Engine(GAE)上的ThreadLocal

我想在我的应用引擎应用程序中提供一些请求范围的数据.

例子:

  • 发出请求的URL.
  • 验证信息.

我看到这ThreadLocal是GAE的JRE白名单.

ThreadLocal提供这些信息是一种安全的好方法吗?有替代/更好/更容易接受的方式吗?

java google-app-engine thread-local

5
推荐指数
1
解决办法
1272
查看次数

在Python中为GAE将实体键序列化为字符串

在Java低级API中,有一种方法可以将实体键转换为字符串,以便您可以根据需要通过JSON将其传递给客户端.有没有办法为python做这个?

python google-app-engine

5
推荐指数
1
解决办法
1583
查看次数

App Engine实体到字典

将Google App Engine实体(在python中)复制到字典对象的好方法是什么?我正在使用db.Expando对象。所有属性均为expando属性。

谢谢!

python google-app-engine expando

5
推荐指数
1
解决办法
2227
查看次数

Backbone.js View可以有模型和集合吗?

Backbone.js View可以有一个Model和一个Collection

我问的原因是因为我正在使用一个View,其中包含一个绘有地点的地图(使用传单库).

Collection是一组模型,其中包含要在地图上绘制的坐标.

Model像地图边界和地图形状保持的东西.

不知道还有什么可以拉掉这个......

任何帮助表示赞赏,谢谢!

javascript backbone.js backbone-relational backbone-views

5
推荐指数
1
解决办法
666
查看次数

RabbitMQ上的计划Celery任务在指定的运行时间之后仍然未被确认

在使用Celery和RabbitMQ时,无法让计划任务在指定的未来时间运行.

在Heroku服务器上使用Django,使用RabbitMQ插件.

问题:

有时候任务根本不会运行,有时它们会运行,但它们运行的​​时间会大幅度减少(例如一小时).

未运行的示例任务:

当我尝试使用倒计时或ETA运行任务时,它实际上从未执行过.这是一个未运行的示例ETA任务:

>>> dummy_task.apply_async(eta=datetime.datetime.now() + timedelta(seconds=60))
<AsyncResult: 03001c1c-329e-46a3-8180-b115688e1865>
Run Code Online (Sandbox Code Playgroud)

结果日志:

2012-07-24T14:03:08+00:00 app[scheduler.1]: [2012-07-24 10:03:08,909: INFO/MainProcess]
    Got task from broker: events.tasks.dummy_task[910ff406-d51c-4c29-bdd1-fec1a8168c12]     
    eta:[2012-07-24 10:04:08.819528+00:00]

一分钟后没有任何反应.将unacknowledged message count在我的Heroku RabbitMQ的管理控制台增加一个和在那里停留.

这有效:

我确保芹菜任务已正确注册,RabbitMQ配置为通过验证我可以使用delay()方法运行任务来接受任务.

>>> dummy_task.delay()
<AsyncResult: 1285ff04-bccc-46d9-9801-8bc9746abd1c>
Run Code Online (Sandbox Code Playgroud)

结果日志:

2012-07-24T14:29:26+00:00 app[worker.1]: [2012-07-24 10:29:26,513: INFO/MainProcess] 
    Got task from broker: events.tasks.dummy_task[1285ff04-bccc-46d9-9801-8bc9746abd1c]

....

2012-07-24T14:29:26+00:00 app[worker.1]: [2012-07-24 10:29:26,571: INFO/MainProcess] 
    Task events.tasks.dummy_task[1285ff04-bccc-46d9-9801-8bc9746abd1c] 
    succeeded in 0.0261888504028s: None

任何有关这方面的帮助将不胜感激.非常感谢!

python heroku rabbitmq celery django-celery

5
推荐指数
1
解决办法
1349
查看次数

调整服务器上的图像大小

我们刚刚实施了一项功能,我们的用户可以上传照片.我们正在重新调整用户上传到缩略图和800x600"显示"尺寸的大小.

我们遇到的问题是这个操作似乎占用了我们服务器上的大量内存.我们正在使用Django-imagekit来执行此操作,并且似乎存在过多内存使用的文档问题.

我们在Heroku服务器上运行django.如果这个因素存在,我们也使用postgresql进行数据搜索和弹性搜索.

  • 我们应该使用更好的库吗?
  • 或者是否有一个完全不同的策略来处理我们应该考虑的服务器上的用户照片?

非常感谢!

python django image-processing image-resizing django-imagekit

5
推荐指数
1
解决办法
515
查看次数

获取NDB查询长度 - 在Google App Engine上使用Python

在谷歌应用引擎上使用NDB时获取查询结果数量的好方法是什么?

试图这样:

query = NDB_Model.query(NDB_Model.some_property == some_value)
if len(query) > 0:    # <-- this throws and exception
    entity = query[0]
Run Code Online (Sandbox Code Playgroud)

我很抱歉这可能是一个非常简单的问题,但我从文档中不清楚.

python google-app-engine app-engine-ndb

5
推荐指数
1
解决办法
4501
查看次数

一个很好的blobstore/memcache解决方案

在Linux云服务器上设置数据仓库挖掘项目.主要语言是Python.

想使用此模式查询数据和存储数据:

  • SQL数据库 - SQL数据库用于查询数据.但是,SQL数据库仅存储需要搜索的字段,它不存储数据本身的"blob".相反,它存储一个键,该键引用键值Blobstore中的完整"blob"数据.
  • Blobstore - 键值Blobstore用于存储数据的实际"文档"或"blob".

我们遇到的问题是我们希望更频繁访问的数据blob自动存储在RAM中.我们计划使用Redis.但是,我们想要一个自动尝试从RAM中获取数据的解决方案,如果它无法在那里找到它,那么它将转到blobstore.

有没有一个好的图书馆或现成的解决方案,我们可以使用而无需自己动手?此外,任何有关拟议架构的评论和批评也将受到赞赏.

非常感谢!

python sql caching data-mining redis

5
推荐指数
1
解决办法
657
查看次数