3
比方说,我有一个型号User
,其型号为StringListProperty
,属性bands
。在请求处理程序中,我正在扩展/追加到bands
列表,并且还为taskqueue
创建了大量任务,其处理程序也将附加到bands
列表中。是否有可能存在竞争条件?更新ListProperty时可能在App Engine上有竞争条件吗?
比方说,我有一个型号User
,其型号为StringListProperty
,属性bands
。在请求处理程序中,我正在扩展/追加到bands
列表,并且还为taskqueue
创建了大量任务,其处理程序也将附加到bands
列表中。是否有可能存在竞争条件?更新ListProperty时可能在App Engine上有竞争条件吗?
如果已成功提交相应的数据存储区事务,则可以使用Tasks within Transaction确保您的任务仅被排队。
taskqueue.add(url='/path/to/my/worker', transactional=True)
你节省'User'到数据存储,然后阅读它在任务队列:
一个事务中添加任务时,只需添加
transactional=True
关键字ARG? –是的,这是可能的。您需要读取/修改/写入交易中的实体。 – dragonx