目前使用的石墨烯-python与石墨烯-django(和石墨烯-django-优化器)。
收到GraphQL查询后,数据库查询在几分之一秒内成功完成;然而,石墨烯在另一个10+秒内不会发送响应。如果我增加响应中发送的数据,响应时间将线性增加(数据的三倍=响应时间的三倍)。
正在检索的数据由嵌套对象组成,最多有7层深,但是对于优化的查询,这不会影响从DB检索数据所需的时间,所以我假设延迟与石墨烯-python将结果解析为GraphQL响应有关。
我不知道如何分析执行来确定是什么花了这么长时间--在Django上运行cProfiler似乎没有跟踪石墨烯的执行。
使用graphene-django-debugger中间件确定SQL查询响应时间,结果如下所示:
"_debug": {
"sql": [
{
"duration": 0.0016078948974609375,
"isSlow": false,
"rawSql": "SELECT SYSDATETIME()"
},
{
"duration": 0.0014908313751220703,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0014371871948242188,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.001291036605834961,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0013201236724853516,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0015559196472167969,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0016672611236572266,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0014820098876953125,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0014810562133789062,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.001667022705078125,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0014202594757080078,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0027959346771240234,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.002704143524169922,
"isSlow": false,
"rawSql": "SELECT [redacted]"
},
{
"duration": 0.0030939579010009766,
"isSlow": false,
"rawSql": "SELECT [redacted]"
}
]
}下面的屏幕截图显示了服务器对同一请求的相应响应时间:

如果有人知道为什么石墨烯需要这么长时间来创建响应,或者可以帮助我分析石墨烯的执行情况,我将非常感激!
发布于 2021-07-20 11:09:08
分析grahene开始执行的方法。
https://stackoverflow.com/questions/63964764
复制相似问题