【发布时间】:2021-01-05 22:11:44
【问题描述】:
目前正在使用带有 graphene-django(和 graphene-django-optimizer)的 graphene-python。
接收到 GraphQL 查询后,数据库查询在几分之一秒内成功完成;但是,石墨烯在另外 10 多秒内没有发送响应。如果我增加响应中发送的数据,响应时间会线性增加(数据的三倍 = 响应时间的三倍)。
正在检索的数据由嵌套对象组成,深度可达 7 层,但通过优化查询,这不会影响从数据库中检索数据所花费的时间,所以我假设延迟与graphene-python 将结果解析为 GraphQL 响应。
我不知道如何分析执行以确定什么需要这么长时间——在 Django 上运行 cProfiler 似乎并没有跟踪石墨烯的执行。
使用graphene-django-debugger中间件确定SQL Query响应时间,结果如下:
"_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]"
}
]
}
如果有人知道为什么石墨烯需要这么长时间来创建响应,或者可以帮助我分析石墨烯的执行情况,我将不胜感激!
【问题讨论】:
标签: django graphql graphene-python graphene-django