所以我在 Google 的应用程序引擎上有了这个 Django 应用程序(更具体地说,是 Django Rest Framework)。大多数情况下它工作正常,除了偶尔,我遇到了一个奇怪的延迟(从 4-5 秒到 10-20 秒......)这个延迟发生在验证用户时和我点击视图本身之前。我已经划掉了两个理论:
- 启动和设置新实例导致的延迟:我已经在使用 python 实例的预热选项(https://cloud.google.com/appengine/docs/python/config/appconfig#Python_Warmup_requests)
- Cloud SQL 相关的延迟。该应用程序与 Cloud SQL 对话以对用户进行身份验证,尽管我已经记录了每个 SQL 查询并且延迟发生在进行任何查询之前。
因此,如果它与 GAE 的架构无关,并且不受 RPC 的限制……会发生什么?我已经插入了 cProfile,这是它可以告诉我们的(我将 cProfile 包裹在 wsgi 处理程序周围):
请注意中间的行:大约 10000 个“len”调用。通常,相同的分析报告没有这样的行。只有这些具有这种荒谬延迟的请求才包含这 10000 次“len”调用。
这可能表明对 Cloud SQL 的查询很长,但正如我之前所说,记录的查询发生在. 或者 SQL 日志记录中可能存在故障......也许。