ambitious-aqua
ambitious-aqua2y ago

Gracefully closing the crawler with keepalive flag true

I'm using puppeteer crawler with keepAlive as true and crawler.run() (without await). This runs the crawler infinitely and if I insert new requests to the requests queue, they get processed. (I'm using non persisted request queue) What I want is to gracefully close the crawler, as in If I get a signal to close, I want to process all the pending requests in the requests queue first and then kill the crawler. Right now If I do crawler.teardown(), it abruptly closes the crawler instances without processing the pending requests.
2 Replies
Pepa J
Pepa J2y ago
Hi @makditeam : Maybe you want to define isFinishedFunction instead? https://docs.apify.com/sdk/js/docs/2.3/typedefs/autoscaled-pool-options#isfinishedfunction
// ...
autoscaledPoolOptions: {
isFinishedFunction: () => {
return wasAbortedAndAllRequestsHandled()
},
},
// ...
// ...
autoscaledPoolOptions: {
isFinishedFunction: () => {
return wasAbortedAndAllRequestsHandled()
},
},
// ...
Lukas Krivka
Lukas Krivka2y ago
You can check there if the queue is empty

Did you find this page helpful?