Amplitude-Node icon indicating copy to clipboard operation
Amplitude-Node copied to clipboard

Send multiple events with logEvent

Open nvuillam opened this issue 3 years ago • 9 comments

Summary

Send multiple events with logEvent

Motivations

Avoid multiple HTTP calls :)

nvuillam avatar Sep 01 '20 08:09 nvuillam

mmmm I see that this package looks much more advanced, and already provides requested feature ....

https://github.com/geoffdutton/amplitude

I'll try to use it and tell here if i still need the enhancement ! ( i started to do it but npm install fails because package @amplitude/utils is not available on npm registry )

nvuillam avatar Sep 01 '20 08:09 nvuillam

Sorry for the inconvenience @nvuillam - we'll work rightaway to get the @amplitude/utils onto the registry. As for the multiple http calls, we're looking to use the batch endpoint as the default on an open pr (along with some logic for retrying events in the correct order).

kelvin-lu avatar Sep 01 '20 09:09 kelvin-lu

I made some tests using amplitude npm package, it seems to work for now :) But as your library seems more lightweight, I may switch back to it once you publish an update :)

nvuillam avatar Sep 01 '20 11:09 nvuillam

Thanks @nvuillam ! We're looking forward to having an update soon. While we are discussing having mutliple events being sent in logEvent, it's also good to note that logEvent by default (in the new version) waits until the next event loop to batch and send all the events its collected - so as to avoid many many http calls. You can also set the option for it to wait even longer for the batch time to increase and send more events at a time.

kelvin-lu avatar Sep 18 '20 20:09 kelvin-lu

Hi @nvuillam - the 1.0.2 behavior is for events to be batched by logEvent and not be sent until a certain amount of time passes, or flush is called - I think this might be a suitable solution for your use?

kelvin-lu avatar Oct 01 '20 17:10 kelvin-lu

Is the HTTP request done by a separate node instance ? If not, it could be not ok for CLIs , because it wouldn't exit until such batch is processed

nvuillam avatar Oct 01 '20 17:10 nvuillam

@nvuillam apologies for the late response! It's using setTimeout to wait some number of seconds in the same node instance, so the concern here is valid. We're adding optioning to make the timings of these waits more configurable - what do you think? We'll also start looking into putting some of this logic in separate node instances.

also, the base optioning is to wait 0 ms - to the next event loop.

kelvin-lu avatar Nov 03 '20 22:11 kelvin-lu

Is there any example/doc about how to use this feature? (multiple events in one HTTP call)

Vadorequest avatar Jun 22 '21 19:06 Vadorequest

While logEvent does batching under the hood, it's a little bit counter intuitive when we actually care about the response body. My understanding it calls this API https://developers.amplitude.com/docs/batch-event-upload-api , which makes my response handlers a little bit confusing to write

viqueen avatar May 30 '22 04:05 viqueen