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
- DeploymentStatus enum value `canceled` m...
Hey, Sorry if it has been reported already, I found an issue using the Dart SDK where the `canceled` enum value is missing from `DeploymentStatus`. This causes...
- Synchronous function execution timeout w...
I am calling server functions with xasync = true and I still get this error message. Synchronous function execution timed out. Use asynchronous execution inste...
- Function running for more than 2 hours i...
This is my projectID: 669fe01b003800dd0503 Cloud functionID is 696ea05400147eb8eb3b I hope this doesn't count against my GB-hours?