- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个处理程序来对我们应用程序的所有用户执行一些处理。基本上,它需要 1 个批处理,处理该批处理的记录,然后为下一批处理排队新任务。
QueueAllUsers(BaseHandler):
FETCH_SIZE = 10
FILTERS = [
UserConfig.level != 0,
UserConfig.is_configured == True
]
ORDER = [UserConfig.level, UserConfig._key]
def get(self):
cursor_key = self.request.get('cursor')
cursor = None
if cursor_key:
# if `cursor` param is provided, use it
cursor = Cursor(urlsafe=str(cursor_key))
q = UserConfig.query(*self.FILTERS).order(*self.ORDER)
total = q.count() # 31 total records
logging.info(total)
users, next_cursor, more = q.fetch_page(self.FETCH_SIZE,
keys_only=True,
start_cursor=cursor)
self.process_users(users)
if more:
self.queue_next_batch(next_cursor)
def queue_next_batch(self, next_cursor):
# Call get() again but this time pass `cursor` param to process next batch
logging.info(next_cursor.urlsafe())
url = '/queue_all_users?cursor=%s' % (next_cursor.urlsafe())
taskqueue.add(
url=url,
method='get',
queue_name='cronjobs'
)
def process_users(self, users):
logging.info(len(users))
# trimmed
但是当第 2 个批处理的任务运行时,NDB 抛出 BadRequest
错误,指出游标超出范围。
我不明白为什么它超出范围?我从总共 31
中提取了 10
记录,因此光标应该仍然有效。
请注意,错误是在第二批(即记录 11-20
)上抛出的。
所以流程是这样的:
/queue_all_users
处理第一批(无游标)。一切正常。/queue_all_users?cursor=123456
的任务。/queue_all_users?cursor=123456
(提供光标)。 fetch_page
抛出 BadRequestErrror
。编辑:我尝试将 FETCH_SIZE
设置为 17
,并且成功获取了第二批!似乎 17
以下的任何内容都会导致错误,而 17
以上的内容有效。那么……到底是什么?
最佳答案
我遇到了同样的问题。当我进行第一个查询时,一切正常,并返回一个游标。使用游标的第二个查询给我错误:
BadRequestError: cursor position is outside the range of the original query.
我尝试了您的解决方案,但对我不起作用。因此,我更改了查询中的过滤器并且有效,我不知道为什么,但也许可以成为您和其他人的解决方案。
我的旧查询是:
page_size = 10
query = Sale.query(ancestor=self.key).filter(ndb.AND(
Sale.current_status.status != SaleStatusEnum.WAITING_PAYMENT,
Sale.current_status.status != SaleStatusEnum.WAITING_PAYMENT
).order(Sale.current_status.status, Sale._key)
query.fetch_page(page_size, start_cursor=cursor)
然后我把所有的“!=”改成IN操作,像这样:
page_size = 10
query = Sale.query(ancestor=self.key).filter(
Sale.current_status.status.IN([
SaleStatusEnum.PROCESSING,
SaleStatusEnum.PAID,
SaleStatusEnum.SHIPPING,
SaleStatusEnum.FINALIZED,
SaleStatusEnum.REFUSED])
).order(Sale.current_status.status, Sale._key)
query.fetch_page(page_size, start_cursor=cursor)
关于python - 获取下一批查询时为 "BadRequestError: cursor position is outside the range of the original query",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26582161/
使用Chalice BadRequestResponse类进行 View 异常处理会导致异常,指出BadRequestResponse不可JSON序列化。为什么从 View 返回BadRequestR
尝试在我的 Python 2.7 AppEngine 应用程序中设置 remote_api stub ,以结合我的本地主机调试器使用数据存储访问(使用真实数据测试我的应用程序)。现在,我已经按照 th
我正在使用链式延迟任务和查询游标循环访问 App Engine 中的数据。 Python 2.7,使用 db(不是 ndb)。例如 def loop_assets(cursor = None):
我正在对我创建的 node.js api 进行性能测试。 有一个 POST 端点将图像作为 base64 的输入。所以请求负载相当大,我的测试用例图像大约是 7-8mb。 当我同时运行 10 个用户的
我正在尝试使用 the official instructions 从我的 Google App Engine 应用下载数据 远程 API 已设置并调用: appcfg.py download_dat
我有这个处理程序来对我们应用程序的所有用户执行一些处理。基本上,它需要 1 个批处理,处理该批处理的记录,然后为下一批处理排队新任务。 QueueAllUsers(BaseHandler):
我正在尝试使用 CLI 对等两个 Azure vnet,因此我遵循了教程 Connect virtual networks with virtual network peering using the
我在 Google App Engine 上将 Python 2.7 运行时与 1.6.2 SDK 中的 NDB 结合使用。 我收到以下错误: BadRequestError: app s~myapp
我是一名优秀的程序员,十分优秀!