Mercurial > code > home > repos > patchablegraph
changeset 9:1b6718a54c00
add a workaround for a str/bytes bug in cyclone SSE
author | drewp@bigasterisk.com |
---|---|
date | Wed, 24 Nov 2021 19:54:20 -0800 |
parents | cf1f964b7c28 |
children | 742e950b0de0 |
files | patch_cyclone.py patchablegraph.py |
diffstat | 2 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patch_cyclone.py Wed Nov 24 19:54:20 2021 -0800 @@ -0,0 +1,20 @@ + + +def patch_sse(): + from cyclone import escape + import cyclone.sse + def new_sendEvent(self, message, event=None, eid=None, retry=None): + if isinstance(message, dict): + message = escape.json_encode(message) + if isinstance(message, str): + message = message.encode("utf-8") + assert isinstance(message, bytes) + if eid: + self.transport.write(b"id: " + eid.encode("utf-8") + b"\n") + if event: + self.transport.write(b"event: " + event + b"\n") + if retry: + self.transport.write(b"retry: " + retry.encode("utf-8") + b"\n") + self.transport.write(b"data: " + message + b"\n\n") + + cyclone.sse.SSEHandler.sendEvent = new_sendEvent
--- a/patchablegraph.py Wed Nov 24 19:48:44 2021 -0800 +++ b/patchablegraph.py Wed Nov 24 19:54:20 2021 -0800 @@ -37,7 +37,9 @@ from rdflib.namespace import NamespaceManager from rdflib.parser import StringInputSource from rdflib.plugins.serializers.jsonld import from_rdf +import patch_cyclone +patch_cyclone.patch_sse() log = logging.getLogger('patchablegraph') SERIALIZE_CALLS = Summary('serialize_calls', 'PatchableGraph.serialize calls')