graphql-python / graphql-core-legacy

GraphQL base implementation for Python (legacy version – see graphql-core for the current one)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exceptions in subscriptions is not logging

GinTR1k opened this issue · comments

Hello!

I've just found that exceptions in subscriptions are not logging, but the message of an exceptions returns to client.

class OrderBookSubscription(graphene.ObjectType):
    order_book = graphene.Field(
        OrderBook,
        pair_id=graphene.Int(required=True)
    )

    @classmethod
    async def resolve_order_book(cls, root, info, pair_id):
        listener = info.context['not exists key']

Request:

{"id":"3","type":"start","payload":{"variables":{"pairId":11},"extensions":{},"operationName":"OrderBookWS","query":"subscription OrderBookWS($pairId: Int!) {\n  orderBook(pairId: $pairId) {\n    buy {\n      price\n      volume\n      share\n      __typename\n    }\n    sell {\n      price\n      volume\n      share\n      __typename\n    }\n    spread\n    __typename\n  }\n}\n"}}

Response:

{"id": "3", "type": "data", "payload": {"data": {"orderBook": null}, "errors": [{"message": "'not exists key'"}]}}
{"id": "3", "type": "complete"}

Logs:

======== Running on http://0.0.0.0:8080 ========
(Press CTRL+C to quit)
2020-07-08 12:06:15,070 - Rx - DEBUG - CurrentThreadScheduler.schedule(state=None)
2020-07-08 12:06:15,072 - Rx - DEBUG - CurrentThreadScheduler.schedule(state=None)
2020-07-08 12:06:15,072 - Rx - DEBUG - CurrentThreadScheduler.schedule(state=None)

Also i've found exception handler, in which need to log the exception.
https://github.com/graphql-python/graphql-core-legacy/blob/master/graphql/execution/executors/asyncio_utils.py#L28

@Cito could you add this as we also need that thing to be fixed?