Restore.py Rasa and Rasa with CI/CD?

I recently came across restore.py rasa_core/restore.py at 0.10.4 · RasaHQ/rasa_core · GitHub. I am wondering what use case this was written for…

I am wondering how to do code updates with rasa, I am still using version 0.10.4 running rasa with a custom script which creates the tracker store, agent, twilio connection and so on. How is Rasa handled in a CI/CD pipeline?

My application involves sending plenty of reminders to multiple users (rasa uses apscheduler with a redis tracker store in my case). So at any time, the EC2 instance I am using has a context of my top level script running.

If I want to push code updates i.e. updated actions.py and or updated model and/or domain file or a model. I see the the only option to take the running chatbot instance down, git pull the code update, and rerun the instance. This seems rather crude. Is there a better way/method to push updates to an already running instance that sadly does need to maintain context/state in memory since there could be multiple users requiring reminders at odd times.

Edit/Question: Does Apscheduler always need an active context of the application? If I do start stop, does connecting to the redis tracker store using the url hopefully help restore it in some way.

Hey,

right now this it doesn’t work to restart Core and keep the scheduled reminders. We could think about using a persistent job store for the apscheduler, but this comes with some restrictions (e.g. we can not call the reminder method on the agent, as that would pickle the whole agent which is not a good idea - and also not necessary).

There are ways to hot reload an agents model from a server: HTTP API nevertheless this won’t fix the reminder getting lost on a servers restart / failure.

Sorry it took me a while to reply. Was travelling to NeurIPS. So the summary of your reply then is that there is no workaround at this moment without actually losing all the reminders already scheduled when pushing a new code update to rasa core. Is that right?

I have not tried it, but I doubt it would work out of the box to use a persistent job scheduler (due to the agent issue I mentioned).

I also think though, that the changes that need to be made to get this working are minor. Would be great if you can create a feature request issue on GitHub for this.

Hi @tmbo please can you let know some more details on Hot reload, could not locate the API in the link you provided.

Also, if I’ve a NLU and Core model already running in a container then would it be possible to have it running and still change the models it’s pointing to

@souvikg10 - please provide some inputs