我的队列任务使用select AT.ACCOUNTID, AT.TAXID, AT.COUNTRY from account_table at
where AT.COUNTRY = 'USA'
and (AT.TAXID IS NULL
or TRANSLATE(AT.TAXID, '012345678' , '999999999' ) NOT IN ('999999999', '99- 9999999', '999-99-9999'))
从外部API获取一些数据并将其保存到ndb数据存储区实体。
这总共需要15秒。
不知何故,当任务运行时,所有其他处理程序(简单的json响应处理程序)变慢。 (慢意味着+ 500ms)
可能导致此问题的原因是什么?
后台任务的概念不会影响面向请求的用户。
我偶然发现here,但我的任务需要超过1秒才能完成。我不知道这对我有什么帮助。
答案 0 :(得分:3)
默认情况下,您的任务由提供用户请求的相同实例执行。背景与否,它们共享相同的CPU,内存和带宽。在不同的模块上运行这些任务是个好主意,这意味着不同的实例。您可以通过为任务队列指定目标来完成此操作。
请注意,当您的当前实例的响应速度变慢时,通常自动App Engine调度程序将旋转新实例。但是,您的案例减速并非由于标准请求数量的增加而导致,而是一个需要更长时间的异常请求。这可以防止自动调度程序对增加的延迟做出反应。您可以切换到手动或基本调度,这可以让您更好地控制容量(实例总数)和旋转新实例的规则,但为后台任务创建不同的模块是更好的解决方案。