Hi Liam, I would suggest start out by taking a look at the gRPC quickstart for 
Python at, https://grpc.io/docs/quickstart/python.html and then modifying that 
example to do what you would like.

The Flask server would launch the separate process using multiprocessing. The 
model process would create a gRPC service endpoint. The Flask server would wait 
for the model process to start and then establish a gRPC connection as a client 
to the gRPC service endpoint of the model process. The gRPC service of the 
model process would have methods, such as trainModel or getModelStatus, … When 
an http request occurs on the Flask http server, the server would then invoke 
the gRPC methods in the model process.

I hope that helps.

Regards --Roland


From: Liam Geron <l...@chatdesk.com>
Date: Thursday, December 20, 2018 at 9:53 AM
To: Roland Hochmuth <rhochm...@alteryx.com>
Cc: Scikit-learn mailing list <scikit-learn@python.org>
Subject: Re: [scikit-learn] How to keep a model running in memory?

Hi Roland,

Thanks for the suggestion! I'll certainly look into gRPC or similar frameworks. 
Currently we have multiprocessing, but it's not used to that same extent. How 
would the second process have a sort of "listener" to respond to incoming 
requests if it is running persistently?

Thanks so much for the help.

Best,
Liam

On Thu, Dec 20, 2018 at 11:12 AM Roland Hochmuth 
<rhochm...@alteryx.com<mailto:rhochm...@alteryx.com>> wrote:
Hi Liam, Not sure I have the complete context for what you are trying to do, 
but have you considered using Python multiprocessing to start a separate 
process? The lifecycle of that process could start when the Flask server 
starts-up or on the first request. The separate process would load and run the 
model. Depending on what you would like to do, some form of IPC mechanism, such 
as gRPC could be used to control or get updates from the model process.

Regards --Roland


From: scikit-learn 
<scikit-learn-bounces+rhochmuth=alteryx....@python.org<mailto:alteryx....@python.org>>
 on behalf of Aneto <an...@chatdesk.com<mailto:an...@chatdesk.com>>
Reply-To: Scikit-learn mailing list 
<scikit-learn@python.org<mailto:scikit-learn@python.org>>
Date: Thursday, December 20, 2018 at 8:21 AM
To: "scikit-learn@python.org<mailto:scikit-learn@python.org>" 
<scikit-learn@python.org<mailto:scikit-learn@python.org>>
Cc: Liam Geron <l...@chatdesk.com<mailto:l...@chatdesk.com>>
Subject: [scikit-learn] How to keep a model running in memory?

Hi scikit learn community,

We currently use scikit-learn for a model that generates predictions on a 
server endpoint. We would like to keep the model running in memory instead of 
having to re-load the model for every new request that comes in to the server.

Can you please point us in the right direction for this? Any tutorials or 
examples.

In case it's helpful, we use Flask for our web server.

Thank you!

Aneto
_______________________________________________
scikit-learn mailing list
scikit-learn@python.org
https://mail.python.org/mailman/listinfo/scikit-learn

Reply via email to