Hi guys -
I said that before - but it’s worth repeating it - congrats on creating and maintaining such an easy-to-use framework.
I am trying to understand and/or get feedback from people with experience on the following: what could be the problem processing an incoming request over RPC with a multi-threaded approach? In my specific case, the situation becomes even murkier as I don’t need to recover the responses - it gets written to a database.
For illustration purposes, the situation would be something like
from nameko.rpc import rpc, RpcProxy class ServiceY: name = "service_y" @rpc def do_something_mp(self,): # do something multi threaded/processed # write results to the db return True class ServiceX: name = "service_x" y = RpcProxy("service_y") @rpc def do_something(self, value): self.y.do_something_mp.call_async() return True
Can someone shed some light on what happens to requests that are never “recovered” (just doing call_async without actually looking for the result())? My understanding is that it shouldn’t be a problem and RabbitMq will manage.
More generally, I am having a hard time understanding what will happen from a thread perspective. I know that the ServiceY will spawn a new worker having its own thread but it feels like (well I kinda saw it) there is a risk for a fork bomb…
Can someone share some insights/ideas on how to investigate this situation?
Thanks in advance,