willow icon indicating copy to clipboard operation
willow copied to clipboard

Trying to find timeout when calling REST command endpoint.

Open richardklafter opened this issue 2 years ago • 4 comments

I am using the REST endpoint to run an LLM and respond with TTS. Everything works great except when the LLM is slow to respond. It seems there is a 5 second timeout somewhere in the stack? I checked the app server's python and didn't see the issue there so perhaps it is in the ESP32? Any help would be appreciated. Happy to pipe it through as a setting in the UI or whatever if I can find the source.

Simple python REST endpoint which demonstrates the issue.

from flask import Flask, jsonify
import time

app = Flask(__name__)

@app.route('/test', methods=['POST'])
def test():
    #time.sleep(4.5) #works
    time.sleep(5) #does not work
    return jsonify("good as gold")

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3000)

richardklafter avatar Oct 13 '23 20:10 richardklafter

I'm admittedly not super well versed in the C code, but I looked through the endpoint code in Willow and I couldn't find any explicit timeout defined in the code for awaiting the post reply, so I wonder if this may be something inside the espressif libraries..? I'll let one of the other devs chime in here 🙂

nikito avatar Oct 14 '23 15:10 nikito

@richardklafter is using WAS Command Endpoint support. We're using python requests with the default timeouts. I'm working through a way to handle this and will have it available shortly.

kristiankielhofner avatar Oct 14 '23 17:10 kristiankielhofner

Thanks @kristiankielhofner!

richardklafter avatar Oct 14 '23 17:10 richardklafter

Timeout in WAS REST Command Endpoint should be 30s as per https://github.com/toverainc/willow-application-server/commit/ff86dd97. Does this answer your question? If yes, please close the ticket. Thanks!

stintel avatar Dec 20 '23 10:12 stintel