v0.320.0 makes multipart subscriptions opt-in

This release adds support for GraphQL subscriptions over Server-Sent Events (SSE) . As part of that work, streaming transports are now selected from your integration’s subscription_protocols , which changes how multipart subscriptions are enabled.

Multipart subscriptions are now opt-in

Previously, multipart subscriptions were enabled unconditionally: any request sent with an Accept: multipart/mixed header was served as a multipart subscription stream, regardless of the subscription_protocols you configured.

Now a streaming transport (multipart subscriptions or SSE) is only active when its protocol is listed in subscription_protocols . The default (graphql-transport-ws and graphql-ws ) does not include the multipart protocol, so if you relied on multipart subscriptions you need to enable them explicitly by adding MULTIPART_SUBSCRIPTION_PROTOCOL :

from strawberry.asgi import GraphQL
from strawberry.subscriptions import (
GRAPHQL_TRANSPORT_WS_PROTOCOL,
GRAPHQL_WS_PROTOCOL,
MULTIPART_SUBSCRIPTION_PROTOCOL,
)
app = GraphQL(
schema,
subscription_protocols=[
GRAPHQL_TRANSPORT_WS_PROTOCOL,
GRAPHQL_WS_PROTOCOL,
MULTIPART_SUBSCRIPTION_PROTOCOL,
],
)

The same applies to SSE, which is enabled with GRAPHQL_SSE_PROTOCOL . Both constants are importable from strawberry.subscriptions .

If you do not use multipart subscriptions, no changes are required.

Contributors:

Edit this page on GitHub