- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用后端通过 ndb.put_multi(list_of_entities)
编写多个实体。
我遇到的问题是,在此之后,如果我进行查询,我将得不到任何结果。如果我设置一个 sleep 定时器,例如 1 秒,我就可以读取我刚刚编写的实体。
Ví dụ:
class Picture(ndb.Expando):
vượt qua
class Favourite(ndb.Expando):
user_id = ndb.StringProperty(required=True)
vượt qua
#...make lists with Picture and Favourite kinds
entities = favourites
entities[1:1] = pictures
ndb.put_multi(entities)
favourites = Favourite.query().filter(Favourite.user_id == user_id).fetch(99999, keys_only=True)
logging.info(len(favourites)) #returns 0 in dev_appserver why?
首先假设问题与缓存有关。 Nhưng:
阅读 NDB Entities Operations on Multiple Keys or Entities :
Advanced note: These methods interact correctly with the context and caching; they don't correspond directly to specific RPC calls.
阅读 NDB Caching
The In-Context Cache
The in-context cache persists only for the duration of a single incoming HTTP request and is "visible" only to the code that handles that request. It's fast; this cache lives in memory. When an NDB function writes to the Datastore, it also writes to the in-context cache. When an NDB function reads an entity, it checks the in-context cache first. If the entity is found there, no Datastore interaction takes place.
Queries do not look up values in any cache. However, query results are written back to the in-context cache if the cache policy says so (but never to Memcache).
嗯,我迷路了。一切似乎都很好。即使从控制台查询我得到了正确的总和,但从来没有在同一个处理程序上,无论什么功能等。
我唯一注意到的是,当等待 time.sleep(1)
时,我会得到正确的结果。因此,这与 ndb.put_multi
可能未同步完成或未同步完成这一事实有关。好迷茫....
câu trả lời hay nhất
早上头脑清醒总好过晚上头晕目眩。
谢谢大家的评论。问题解决了。你以正确的方式引导我回答我的问题:
我使用祖先查询来正确获取结果。值得一提的是以下几点
Understanding NDB Writes: Commit, Invalidate Cache, and Apply
The NDB function that writes the data (for example, put()) returns after the cache invalidation; the Apply phase happens asynchronously.
这意味着在每次放置之后,应用阶段可能尚未完成。
并且:
This behavior affects how and when data is visible to your application. The change may not be completely applied to the underlying Datastore a few hundred milliseconds or so after the NDB function returns. A non-ancestor query performed while a change is being applied may see an inconsistent state (i.e., part but not all of the change). For more information about the timing of writes and queries, see Transaction Isolation in App Engine.
还有一些关于读取和写入之间一致性的信息,取自 Google Academy Retrieving data from the Datastore
Google App Engine's High Replication Datastore (HRD) provides high availability for your reads and writes by storing data synchronously in multiple data centers. However, the delay from the time a write is committed until it becomes visible in all data centers means that queries across multiple entity groups (non-ancestor queries) can only guarantee eventually consistent results. Consequently, the results of such queries may sometimes fail to reflect recent changes to the underlying data. However, a direct fetch of an entity by its key is always consistent.
感谢@Paul C 的不断帮助,感谢@dragonx 和@sologoub 帮助我理解。
关于python - 使用后端 NDB 的 GAE put_multi() 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205763/
Tôi tìm trên mạng nhưng không tìm thấy bài viết phù hợp giải thích cách sử dụng dịch vụ WCF bằng javascript, đặc biệt là WebScriptEndpoint. Bất cứ ai có thể đưa ra bất kỳ hướng dẫn về điều này? Cảm ơn bạn vì câu trả lời tốt nhất Đây là một bài viết về.
Tôi đang viết một chương trình C sẽ chạy các lệnh Linux, ví dụ: cat /etc/passwd | grep list cut -c 1-5 Tôi không nhận được kết quả nào *ở đây cha mẹ đợi con đầu lòng (chi
Vì vậy, tôi đang cố gắng xử lý việc tải tệp lên và sau đó lưu trữ tệp đó vào cơ sở dữ liệu dưới dạng tệp nhị phân. Sau khi lưu trữ, tôi cố gắng phân phát tệp trên URL đã cho. Tôi dường như không thể tìm thấy một phương pháp hoạt động ở đây. Tôi cần sử dụng cơ sở dữ liệu vì tôi sử dụng Google Apps
Tôi đang cố gắng tạo một macro thêm công thức bên dưới vào một ô rồi kéo nó qua cột và sao chép cùng một công thức trong cột H. Tôi muốn nhập dữ liệu vào cột F và H bằng công thức Range("F1") .công thức = "=IF(ISE
Câu hỏi tương tự như câu hỏi này, nhưng tôi muốn sử dụng OperatorPrecedenceParser để phân tích một biểu thức bằng ứng dụng hàm trong FParsec. Đây là AST của tôi: type Expression =.
Tôi muốn thay đổi truy vấn này thành mã tùy thuộc vào vị trí chọn COUNT(giới tính) làm số lượng giới tính từ khách hàng bằng cách sử dụng phần tiếp theo và node.js
Tôi đang sử dụng GNU bash, phiên bản 5.0.3(1)-distro (x86_64-pc-linux-gnu) và tôi đang tự hỏi tại sao tôi lại gặp lỗi cú pháp với một câu lệnh gán đơn giản: #/bin/bash var1= /tmp
Đây là lý do tại sao mã của tôi không hoạt động trong IE. Mã của tôi hoạt động trong tất cả các trình duyệt. Không có gì. Nhưng khi tôi chạy dự án của mình trên IE thì nó phát hiện lỗi. Và cả lớp jquery của tôi cũng như lớp InsertadjacentHTMl đều không
Tôi đang cố gắng thay đổi HTML bên trong của thẻ. Tôi không có quyền truy cập vào biểu mẫu nên không thể chỉnh sửa HTML. Mã định danh duy nhất mà thẻ có là thuộc tính "for". Đây là cấu trúc của đầu vào và nhãn:
Tôi có một trang nơi tôi trả lại bài đăng của người dùng, tôi có thể đưa ra nhận xét ngay lập tức về những bài đăng này bằng cách sử dụng một số mã jquery, sau khi nhận xét mới được đăng, tôi chèn nhận xét mới bên dưới bài đăng cùng với nút xóa. Vấn đề là nút Xóa không hoạt động trên các phần tử mới được chèn vào,
Tôi có tệp "được phân cách bằng đường ống" với khoảng 20 cột. Tôi chỉ muốn băm cột đầu tiên bằng cách sử dụng sha1sum, một số giống như số tài khoản và trả về phần còn lại của các cột. Cách tốt nhất để làm điều này bằng awk hoặc sed là gì? tài khoản
Tôi cần chèn nội dung sau vào bảng của mình... Bảng người dùng của tôi có năm cột id, tên người dùng, mật khẩu, tên, mục nhập. (Tôi chưa gửi bất cứ thứ gì vào mục này, tôi sẽ làm điều đó sau bằng php) Nhưng vì lý do nào đó tôi vẫn gặp lỗi này: #1054 - U
Vì vậy, tôi đang cố gắng có một trường nhập để tôi có thể nhập bất kỳ ký tự nào, nhưng sau đó viết thường giá trị đã nhập, xóa mọi ký tự không phải chữ và số, để lại "." Ví dụ mình nhập: 70% trái đất là nước, -!*#$^ & 30% đất bị mất
Tôi đang cố gắng làm một việc mà tôi nghĩ là rất đơn giản nhưng vì lý do nào đó tôi lại không đạt được kết quả như mong muốn? Tôi mới làm quen với javascript nhưng có kinh nghiệm với java nên tôi tin rằng mình không sử dụng một số loại quy tắc chính xác. Đây là phương thức lấy giá trị đầu vào, kiểm tra lựa chọn
Tôi muốn tải dữ liệu từ cơ sở dữ liệu mysql bằng Angularjs. Đây là cách ứng dụng hoạt động; người dùng đăng nhập và tên người dùng của họ được lưu trữ trong cookie. Tên người dùng này được hiển thị trên trang chủ. Tôi muốn nhận giá trị này và chuyển nó qua Angularjs
Tôi đang sử dụng autoLayout và tôi muốn đặt nhãn UIlabel trên UITableViewCell, nhãn này phải luôn ở bên phải và chính giữa phía bên phải của ô. Đây là điều tôi đang cố gắng đạt được nên ở đây bạn có thể thấy điều tôi đang nói đến
Tôi cần truy vấn tương đương với elaticsearch với MySql. Truy vấn sql của tôi: CHỌN DISTINCT t.product_id NHƯ id TỪ tbl_sup_price t
Tôi đang triển khai mã để sử dụng JSON. thiết lập func() { if let FlickrURL = NSURL(string: "https://api.flickr.com/
Tôi đã thử khai báo một biến bằng vòng lặp for và sau đó kiểm tra xem cols và rols có giống nhau không. Nếu có, nó sẽ chạy hàm đệ quy. Tuy nhiên, tôi gặp sự cố khi thực hiện thao tác trong javascript. Có ai có thể giúp được không? Bây giờ, khi so sánh col.1 và
Tôi đã đưa ra một ví dụ ngắn gọn về vấn đề tôi đang giải quyết. Mã HTML: 1 2 3 Mã CSS: .BB a:hover{ color: #000 } .BB > li:after {
Tôi là một lập trình viên xuất sắc, rất giỏi!