Apify & CrawleeA&CApify & Crawlee
Powered by
incredible-moccasinI
Apify & Crawlee•2y ago•
4 replies
incredible-moccasin

Unexpected results when currying a value into the request handler

I need to curry a value into my request handler. When I do this, my first invocation of the crawler runs as expected, but the second invocation reaches maxRequestsPerCrawl immediately (even when passing in a new url).
I see this on the first run:
...
INFO  PlaywrightCrawler: Earlier, the crawler reached the maxRequestsPerCrawl limit of 2 requests and all requests that were in progress at that time have now finished. In total, the crawler processed 5 requests and will shut down.
INFO  PlaywrightCrawler: Final request statistics: {"requestsFinished":5,"requestsFailed":0,"retryHistogram":[5],"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":13368,"requestsFinishedPerMinute":9,"requestsFailedPerMinute":0,"requestTotalDurationMillis":66838,"requestsTotal":5,"crawlerRuntimeMillis":32684}
INFO  PlaywrightCrawler: Finished! Total 5 requests: 5 succeeded, 0 failed. {"terminal":true}
...
INFO  PlaywrightCrawler: Earlier, the crawler reached the maxRequestsPerCrawl limit of 2 requests and all requests that were in progress at that time have now finished. In total, the crawler processed 5 requests and will shut down.
INFO  PlaywrightCrawler: Final request statistics: {"requestsFinished":5,"requestsFailed":0,"retryHistogram":[5],"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":13368,"requestsFinishedPerMinute":9,"requestsFailedPerMinute":0,"requestTotalDurationMillis":66838,"requestsTotal":5,"crawlerRuntimeMillis":32684}
INFO  PlaywrightCrawler: Finished! Total 5 requests: 5 succeeded, 0 failed. {"terminal":true}

Then this on the second:
INFO  PlaywrightCrawler: Starting the crawler.
INFO  PlaywrightCrawler: Crawler reached the maxRequestsPerCrawl limit of 2 requests and will shut down soon. Requests that are in progress will be allowed to finish.
INFO  PlaywrightCrawler: Final request statistics: {"requestsFinished":0,"requestsFailed":0,...
INFO  PlaywrightCrawler: Starting the crawler.
INFO  PlaywrightCrawler: Crawler reached the maxRequestsPerCrawl limit of 2 requests and will shut down soon. Requests that are in progress will be allowed to finish.
INFO  PlaywrightCrawler: Final request statistics: {"requestsFinished":0,"requestsFailed":0,...


I have a function that takes a single string value (
step_id
step_id
) and passes that value into a function that returns the request handler.
export function crawler<T>(step_id: string) {
  const playwright_crawler = new PlaywrightCrawler({
    maxRequestsPerCrawl: 2,
    requestHandler: create_crawlee_rec_handler(step_id),
  });
  return playwright_crawler;
}
export function crawler<T>(step_id: string) {
  const playwright_crawler = new PlaywrightCrawler({
    maxRequestsPerCrawl: 2,
    requestHandler: create_crawlee_rec_handler(step_id),
  });
  return playwright_crawler;
}


This function is imported and called as such:
const crawlerInstance = crawler(`${step.id}`);
    await crawlerInstance.run([href]);
const crawlerInstance = crawler(`${step.id}`);
    await crawlerInstance.run([href]);


If I don't curry the step_id into the request handler, the second run works just fine. Maybe there is another way to get my step_id value into the scope of the request handler?
Thanks in advance for any advice.
Apify & Crawlee banner
Apify & CrawleeJoin
This is the official developer community of Apify and Crawlee.
13,923Members
Resources
Recent Announcements

Similar Threads

Was this page helpful?
Recent Announcements
ellativity

**Update to Store Publishing Terms and Acceptable Use Policy** Due to an influx of fraudulent reviews recently, Apify's Legal team has taken some actions to protect developers, customers, and Apify, by updating the Store Publishing Terms and Acceptable Use Policy. Please pay special attention to the updated terms in section 4 of the Store Publishing Terms here: https://docs.apify.com/legal/store-publishing-terms-and-conditions Additionally, please review the changes to section 2 of the Acceptable Use Policy here: https://docs.apify.com/legal/acceptable-use-policy If you have any questions, please ask them in <#1206131794261315594> so everyone can see the discussion. Thanks!

ellativity · 3w ago

ellativity

Hi @everyone I'm hanging out with the Creator team at Apify in https://discord.com/channels/801163717915574323/1430491198145167371 if you want to discuss Analytics and Insights!

ellativity · 4w ago

ellativity

2 things for <@&1092713625141137429> members today: 1. The Apify developer rewards program is open for registrations: https://apify.notion.site/developer-rewards This is the program where you will earn points for marketing activities. The rewards are still TBC, but the real purpose of the program is to help you structure your marketing activities and efforts. In the coming weeks, I will be populating that link with guides to help you identify the best ways to market your Actors, as well as scheduling workshops and office hours to help you create content and develop your own marketing strategy. 2. At 2PM CET (in about 80 minutes) there will be an office hour with the team behind Insights and Analytics, who want your feedback on how to improve analytics for you. Join us in https://discord.com/channels/801163717915574323/1430491198145167371 to share your ideas!

ellativity · 4w ago

Similar Threads

How to make a request within a handler
ill-bronzeIill-bronze / crawlee-js
3y ago
PlayWrightCrawler new request results are bleeding into old requests. RequestQueue issue?
cryptorexCcryptorex / crawlee-js
4y ago
Retire session after request handler timed out
hurt-tomatoHhurt-tomato / crawlee-js
3y ago
How to catch/access the errors in the handler function for failed request
ill-bronzeIill-bronze / crawlee-js
3y ago