in elasticapm/instrumentation/packages/graphql.py [0:0]
def call(self, module, method, wrapped, instance, args, kwargs):
name = "GraphQL"
info = ""
query = args[2]
if "ResolveInfo" == type(query).__name__:
if str(query.return_type).rstrip("!") in [
"Boolean",
"Context",
"Date",
"DateTime",
"Decimal",
"Dynamic",
"Float",
"ID",
"Int",
"String",
"Time",
"UUID",
"Boolean",
"String",
]:
return wrapped(*args, **kwargs)
op = query.operation.operation
field = query.field_name
info = "%s %s" % (op, field)
elif "RequestParams" == type(query).__name__:
info = "%s %s" % ("request", query.query)
else:
info = str(query)
with capture_span("%s.%s" % (name, info), span_type="external", span_subtype="graphql", span_action="query"):
return wrapped(*args, **kwargs)