I noticed that the Appwrite Python function uses Flask for its construction, so I attempted to send chunks with Flask’s SSE response. However, the Appwrite function responses do not support the use of return Response(event_stream(), mimetype="text/event-stream")
There are inbuilt function to return value. You can check the example from the official docs:
https://appwrite.io/docs/products/functions/development#response
def main(context):
type = context.req.query['type']
if type == 'empty':
return context.res.empty()
elif type =='json':
return context.res.json({"type": "This is a JSON response"})
elif type == 'redirect':
return context.res.redirect("https://appwrite.io", 301)
elif type == 'html':
return context.res.send("<h1>This is an HTML response</h1>", 200, {
"content-type": "text/html"
})
else:
return context.res.send("This is a text response")
I was aware of that, but none of them support the SSE Response, which I require.
I tried the next function:```python import time
def main(context): context.log("Starting")
def event_stream():
context.log("I am inside the Function")
for i in range(0, 20):
yield 'data: {"message": "Hello ' + "{}".format(i) + '"}\n\n'
time.sleep(0.3)
yield 'data: {"message": "World"}\n\n'
yield 'data: {"message": "stop"}\n\n'
yield 'data: {"message": "World"}\n\n'
yield 'data: {"message": "World"}\n\n'
yield 'data: {"message": "World"}\n\n'
# Response(event_stream(), mimetype="text/event-stream")
return context.res.send(event_stream(), 200, {"content-type": "text/event-stream"})
Its works but It send all yield message as one response only.
I believe this is happening because the Appwrite server doesn't support setting the MIME type to text/event-stream
, which is necessary to enable server-sent events on both the client and server side.
???
Yes, this is correct. Appwrite Functions do not currently support chunked responses. My understanding is that this is on the wishlist, but I'm not aware of any open Issue for it, or of any specific milestone (unless this is part of the SSR milestone for 1.5? - would need someone from Core to clarify that).
Recommended threads
- Realtime with multiple connections
I need the Realtime on multiple Collections for diffrent applicational logic. So my question is: Is there a way to have only 1 Websocket connection or do I need...
- HTTP POST to function returning "No Appw...
Hi everyone, I’m running into an issue with my self-hosted Appwrite instance. I’ve set up my environment variables (APPWRITE_FUNCTION_PROJECT_ID, APPWRITE_FUNC...
- Can't add dart 3.5 runtime
Modified the `.env` to enable dart 3.5 runtime on my self-hosted instance but still can't find the runtime when creating a new function. I manually pulled the i...