Thanks Sven!

I don't know whether I'm going to use it, but it's good that the feature is
there and I have the option of sharing such session among clients.

Regards,

Esteban A. Maringolo


On Wed, Nov 3, 2021 at 1:06 PM Sven Van Caekenberghe <s...@stfx.eu> wrote:

> Maybe this helps:
>
>
> https://github.com/svenvc/zinc/commit/d9fe41707b16748b9340540127ec5d77800856b6
>
> > On 1 Nov 2021, at 21:22, Sven Van Caekenberghe <s...@stfx.eu> wrote:
> >
> >
> >
> >> On 1 Nov 2021, at 20:03, Esteban Maringolo <emaring...@gmail.com>
> wrote:
> >>
> >> If I need to use cookies, would it make sense to keep a
> ZnUserAgentSession and assign it to each new client?
> >
> > I don't know or remember, my first reaction would be to say that it was
> not designed for that purpose, but maybe it could be used for that.
> >
> >> I'm asking this in case I have to share cookies between requests. But
> the session variable seems to be private in ZnClient given that it doesn't
> provide any setter.
> >
> > There is the cookie jar object inside the session, maybe you can try to
> share that ?
> >
> > Or you could copy the necessary cookies over ? That certainly seems like
> the safest thing.
> >
> >> Regards,
> >>
> >> Esteban A. Maringolo
> >>
> >>
> >> On Mon, Nov 1, 2021 at 1:39 PM Esteban Maringolo <emaring...@gmail.com>
> wrote:
> >> Thank you Sven.
> >>
> >> I'll go with instantiating a new client for each request, the less
> state shared, the better :-)
> >>
> >> Regards!
> >>
> >> Esteban A. Maringolo
> >>
> >>
> >> On Fri, Oct 29, 2021 at 12:15 PM Sven Van Caekenberghe <s...@stfx.eu>
> wrote:
> >> Hi,
> >>
> >>> On 29 Oct 2021, at 15:42, Esteban Maringolo <emaring...@gmail.com>
> wrote:
> >>>
> >>> Hi,
> >>>
> >>> I happened to me more than once that I have to create some REST
> service "client" in which I usually wrap an HTTP client inside (ZnClient in
> this case), and all the calls to the service, end up using the HTTP client,
> inside some mutex to serialize the execution.
> >>
> >> Yes, that is a good design. However, whether your REST client object
> wrapping a ZnClient is used by multiple concurrent threads is another
> decision. I would personally not do that. See further.
> >>
> >>> But I don't like that, in particular when some endpoints are better
> with streaming responses (large downloads) and I have to fiddle with the
> client and set it back to the settings before executing the request.
> >>
> >> You only can and should reuse connections to the same endpoint/service
> only, doing similar types of request/responses (let's say simple ones).
> >>
> >> A definitive danger point is authentication and authorization:
> different calls by different users might need different REST call settings,
> each time. Also, caching can be a problem, if user A can see / sees the
> cache of user B.
> >>
> >>> So, long story short... is it always safer to instantiate a new
> ZnClient on a per request basis since no state is shared, but I guess it is
> also less effective if I'm performing several requests to the same server.
> >>
> >> A new instance is definitely safer because it is cleaner. Reusing a
> connection is more efficient when doing multiple calls in (quick)
> succession. The penalty is usually pretty low, you can postpone optimising
> until there is an actual problem.
> >>
> >> Error handling and recovery are also harder in the reuse case (what
> state is the connection in ?).
> >>
> >> ZnClient does a form of automatic reconnection/retry though.
> >>
> >>> What are the recommended approaches here?
> >>>
> >>>
> >>> Esteban A. Maringolo
> >>
> >> HTH,
> >>
> >> Sven
> >
>

Reply via email to