@crawlee/core 4.0.0-beta.27 → 4.0.0-beta.271
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -15
- package/byte-utils.d.ts +17 -0
- package/byte-utils.js +42 -0
- package/configuration.d.ts +77 -235
- package/configuration.js +159 -227
- package/debug.d.ts +36 -0
- package/debug.js +70 -0
- package/errors.d.ts +45 -18
- package/errors.js +58 -27
- package/events/event-manager.d.ts +78 -0
- package/events/{event_manager.js → event-manager.js} +12 -13
- package/events/index.d.ts +3 -3
- package/events/index.js +2 -3
- package/events/local-event-manager.d.ts +32 -0
- package/events/local-event-manager.js +101 -0
- package/events/system-info.d.ts +38 -0
- package/events/system-info.js +1 -0
- package/index.d.ts +9 -12
- package/index.js +10 -11
- package/internal.d.ts +8 -0
- package/internal.js +9 -0
- package/iterables.d.ts +79 -0
- package/iterables.js +134 -0
- package/log.d.ts +77 -1
- package/log.js +134 -1
- package/memory-storage/consts.d.ts +4 -0
- package/memory-storage/consts.js +4 -0
- package/memory-storage/index.d.ts +1 -0
- package/memory-storage/index.js +1 -0
- package/memory-storage/memory-storage.d.ts +43 -0
- package/memory-storage/memory-storage.js +158 -0
- package/memory-storage/resource-clients/common/base-client.d.ts +4 -0
- package/memory-storage/resource-clients/common/base-client.js +6 -0
- package/memory-storage/resource-clients/dataset.d.ts +35 -0
- package/memory-storage/resource-clients/dataset.js +108 -0
- package/memory-storage/resource-clients/key-value-store.d.ts +54 -0
- package/memory-storage/resource-clients/key-value-store.js +179 -0
- package/memory-storage/resource-clients/request-queue.d.ts +55 -0
- package/memory-storage/resource-clients/request-queue.js +413 -0
- package/memory-storage/utils.d.ts +16 -0
- package/memory-storage/utils.js +41 -0
- package/owned-or-injected.d.ts +58 -0
- package/owned-or-injected.js +98 -0
- package/package.json +23 -23
- package/proxy-configuration.d.ts +118 -0
- package/proxy-configuration.js +141 -0
- package/recoverable-state.d.ts +177 -0
- package/recoverable-state.js +268 -0
- package/request.d.ts +48 -101
- package/request.js +139 -249
- package/serialization.d.ts +0 -1
- package/serialization.js +18 -18
- package/service-locator.d.ts +168 -0
- package/service-locator.js +255 -0
- package/storages/batched-adds.d.ts +39 -0
- package/storages/batched-adds.js +81 -0
- package/storages/dataset.d.ts +105 -58
- package/storages/dataset.js +292 -150
- package/storages/index.d.ts +11 -12
- package/storages/index.js +7 -12
- package/storages/key-value-store-codec.d.ts +32 -0
- package/storages/key-value-store-codec.js +108 -0
- package/storages/{key_value_store.d.ts → key-value-store.d.ts} +169 -72
- package/storages/key-value-store.js +767 -0
- package/storages/request-dedup-cache.d.ts +20 -0
- package/storages/request-dedup-cache.js +48 -0
- package/storages/{request_list.d.ts → request-list.d.ts} +33 -173
- package/storages/{request_list.js → request-list.js} +276 -255
- package/storages/request-loader.d.ts +127 -0
- package/storages/request-loader.js +34 -0
- package/storages/request-manager-tandem.d.ts +82 -0
- package/storages/request-manager-tandem.js +200 -0
- package/storages/request-manager.d.ts +119 -0
- package/storages/request-manager.js +1 -0
- package/storages/{request_provider.d.ts → request-queue.d.ts} +127 -159
- package/storages/request-queue.js +871 -0
- package/storages/storage-instance-manager.d.ts +86 -0
- package/storages/storage-instance-manager.js +256 -0
- package/storages/storage-stats.d.ts +48 -0
- package/storages/storage-stats.js +29 -0
- package/storages/transaction.d.ts +270 -0
- package/storages/transaction.js +296 -0
- package/storages/utils.d.ts +59 -11
- package/storages/utils.js +76 -16
- package/system-info/cpu-info.d.ts +67 -0
- package/system-info/cpu-info.js +216 -0
- package/system-info/memory-info.d.ts +31 -0
- package/system-info/memory-info.js +115 -0
- package/system-info/ps-tree.d.ts +17 -0
- package/system-info/ps-tree.js +144 -0
- package/system-info/runtime.d.ts +14 -0
- package/system-info/runtime.js +80 -0
- package/typedefs.d.ts +0 -6
- package/typedefs.js +0 -1
- package/url.d.ts +9 -0
- package/url.js +11 -0
- package/validators.d.ts +23 -18
- package/validators.js +14 -18
- package/autoscaling/autoscaled_pool.d.ts +0 -300
- package/autoscaling/autoscaled_pool.d.ts.map +0 -1
- package/autoscaling/autoscaled_pool.js +0 -533
- package/autoscaling/autoscaled_pool.js.map +0 -1
- package/autoscaling/index.d.ts +0 -4
- package/autoscaling/index.d.ts.map +0 -1
- package/autoscaling/index.js +0 -4
- package/autoscaling/index.js.map +0 -1
- package/autoscaling/snapshotter.d.ts +0 -189
- package/autoscaling/snapshotter.d.ts.map +0 -1
- package/autoscaling/snapshotter.js +0 -285
- package/autoscaling/snapshotter.js.map +0 -1
- package/autoscaling/system_status.d.ts +0 -181
- package/autoscaling/system_status.d.ts.map +0 -1
- package/autoscaling/system_status.js +0 -169
- package/autoscaling/system_status.js.map +0 -1
- package/configuration.d.ts.map +0 -1
- package/configuration.js.map +0 -1
- package/cookie_utils.d.ts +0 -43
- package/cookie_utils.d.ts.map +0 -1
- package/cookie_utils.js +0 -111
- package/cookie_utils.js.map +0 -1
- package/crawlers/context_pipeline.d.ts +0 -61
- package/crawlers/context_pipeline.d.ts.map +0 -1
- package/crawlers/context_pipeline.js +0 -99
- package/crawlers/context_pipeline.js.map +0 -1
- package/crawlers/crawler_commons.d.ts +0 -191
- package/crawlers/crawler_commons.d.ts.map +0 -1
- package/crawlers/crawler_commons.js +0 -108
- package/crawlers/crawler_commons.js.map +0 -1
- package/crawlers/crawler_utils.d.ts +0 -10
- package/crawlers/crawler_utils.d.ts.map +0 -1
- package/crawlers/crawler_utils.js +0 -12
- package/crawlers/crawler_utils.js.map +0 -1
- package/crawlers/error_snapshotter.d.ts +0 -60
- package/crawlers/error_snapshotter.d.ts.map +0 -1
- package/crawlers/error_snapshotter.js +0 -118
- package/crawlers/error_snapshotter.js.map +0 -1
- package/crawlers/error_tracker.d.ts +0 -55
- package/crawlers/error_tracker.d.ts.map +0 -1
- package/crawlers/error_tracker.js +0 -309
- package/crawlers/error_tracker.js.map +0 -1
- package/crawlers/index.d.ts +0 -7
- package/crawlers/index.d.ts.map +0 -1
- package/crawlers/index.js +0 -7
- package/crawlers/index.js.map +0 -1
- package/crawlers/internals/types.d.ts +0 -8
- package/crawlers/internals/types.d.ts.map +0 -1
- package/crawlers/internals/types.js +0 -2
- package/crawlers/internals/types.js.map +0 -1
- package/crawlers/statistics.d.ts +0 -213
- package/crawlers/statistics.d.ts.map +0 -1
- package/crawlers/statistics.js +0 -349
- package/crawlers/statistics.js.map +0 -1
- package/enqueue_links/enqueue_links.d.ts +0 -254
- package/enqueue_links/enqueue_links.d.ts.map +0 -1
- package/enqueue_links/enqueue_links.js +0 -268
- package/enqueue_links/enqueue_links.js.map +0 -1
- package/enqueue_links/index.d.ts +0 -3
- package/enqueue_links/index.d.ts.map +0 -1
- package/enqueue_links/index.js +0 -3
- package/enqueue_links/index.js.map +0 -1
- package/enqueue_links/shared.d.ts +0 -84
- package/enqueue_links/shared.d.ts.map +0 -1
- package/enqueue_links/shared.js +0 -219
- package/enqueue_links/shared.js.map +0 -1
- package/errors.d.ts.map +0 -1
- package/errors.js.map +0 -1
- package/events/event_manager.d.ts +0 -52
- package/events/event_manager.d.ts.map +0 -1
- package/events/event_manager.js.map +0 -1
- package/events/index.d.ts.map +0 -1
- package/events/index.js.map +0 -1
- package/events/local_event_manager.d.ts +0 -27
- package/events/local_event_manager.d.ts.map +0 -1
- package/events/local_event_manager.js +0 -75
- package/events/local_event_manager.js.map +0 -1
- package/index.d.ts.map +0 -1
- package/index.js.map +0 -1
- package/log.d.ts.map +0 -1
- package/log.js.map +0 -1
- package/proxy_configuration.d.ts +0 -169
- package/proxy_configuration.d.ts.map +0 -1
- package/proxy_configuration.js +0 -247
- package/proxy_configuration.js.map +0 -1
- package/recoverable_state.d.ts +0 -123
- package/recoverable_state.d.ts.map +0 -1
- package/recoverable_state.js +0 -140
- package/recoverable_state.js.map +0 -1
- package/request.d.ts.map +0 -1
- package/request.js.map +0 -1
- package/router.d.ts +0 -134
- package/router.d.ts.map +0 -1
- package/router.js +0 -164
- package/router.js.map +0 -1
- package/serialization.d.ts.map +0 -1
- package/serialization.js.map +0 -1
- package/session_pool/consts.d.ts +0 -4
- package/session_pool/consts.d.ts.map +0 -1
- package/session_pool/consts.js +0 -4
- package/session_pool/consts.js.map +0 -1
- package/session_pool/errors.d.ts +0 -8
- package/session_pool/errors.d.ts.map +0 -1
- package/session_pool/errors.js +0 -12
- package/session_pool/errors.js.map +0 -1
- package/session_pool/events.d.ts +0 -3
- package/session_pool/events.d.ts.map +0 -1
- package/session_pool/events.js +0 -3
- package/session_pool/events.js.map +0 -1
- package/session_pool/index.d.ts +0 -6
- package/session_pool/index.d.ts.map +0 -1
- package/session_pool/index.js +0 -6
- package/session_pool/index.js.map +0 -1
- package/session_pool/session.d.ts +0 -186
- package/session_pool/session.d.ts.map +0 -1
- package/session_pool/session.js +0 -278
- package/session_pool/session.js.map +0 -1
- package/session_pool/session_pool.d.ts +0 -258
- package/session_pool/session_pool.d.ts.map +0 -1
- package/session_pool/session_pool.js +0 -387
- package/session_pool/session_pool.js.map +0 -1
- package/storages/access_checking.d.ts +0 -13
- package/storages/access_checking.d.ts.map +0 -1
- package/storages/access_checking.js +0 -14
- package/storages/access_checking.js.map +0 -1
- package/storages/dataset.d.ts.map +0 -1
- package/storages/dataset.js.map +0 -1
- package/storages/index.d.ts.map +0 -1
- package/storages/index.js.map +0 -1
- package/storages/key_value_store.d.ts.map +0 -1
- package/storages/key_value_store.js +0 -512
- package/storages/key_value_store.js.map +0 -1
- package/storages/request_list.d.ts.map +0 -1
- package/storages/request_list.js.map +0 -1
- package/storages/request_list_adapter.d.ts +0 -58
- package/storages/request_list_adapter.d.ts.map +0 -1
- package/storages/request_list_adapter.js +0 -81
- package/storages/request_list_adapter.js.map +0 -1
- package/storages/request_manager_tandem.d.ts +0 -68
- package/storages/request_manager_tandem.d.ts.map +0 -1
- package/storages/request_manager_tandem.js +0 -124
- package/storages/request_manager_tandem.js.map +0 -1
- package/storages/request_provider.d.ts.map +0 -1
- package/storages/request_provider.js +0 -591
- package/storages/request_provider.js.map +0 -1
- package/storages/request_queue.d.ts +0 -128
- package/storages/request_queue.d.ts.map +0 -1
- package/storages/request_queue.js +0 -320
- package/storages/request_queue.js.map +0 -1
- package/storages/request_queue_v2.d.ts +0 -87
- package/storages/request_queue_v2.d.ts.map +0 -1
- package/storages/request_queue_v2.js +0 -438
- package/storages/request_queue_v2.js.map +0 -1
- package/storages/sitemap_request_list.d.ts +0 -250
- package/storages/sitemap_request_list.d.ts.map +0 -1
- package/storages/sitemap_request_list.js +0 -431
- package/storages/sitemap_request_list.js.map +0 -1
- package/storages/storage_manager.d.ts +0 -62
- package/storages/storage_manager.d.ts.map +0 -1
- package/storages/storage_manager.js +0 -105
- package/storages/storage_manager.js.map +0 -1
- package/storages/utils.d.ts.map +0 -1
- package/storages/utils.js.map +0 -1
- package/typedefs.d.ts.map +0 -1
- package/typedefs.js.map +0 -1
- package/validators.d.ts.map +0 -1
- package/validators.js.map +0 -1
|
@@ -1,99 +1,76 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BatchAddRequestsResult, Dictionary, ProcessedRequest, QueueOperationInfo, RequestQueueBackend, RequestQueueInfo } from '@crawlee/types';
|
|
2
2
|
import type { ReadonlyDeep } from 'type-fest';
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
5
|
-
import {
|
|
6
|
-
import type { ProxyConfiguration } from '../proxy_configuration.js';
|
|
7
|
-
import type { InternalSource, RequestOptions, Source } from '../request.js';
|
|
3
|
+
import type { CrawleeLogger } from '../log.js';
|
|
4
|
+
import type { IProxyConfiguration } from '../proxy-configuration.js';
|
|
5
|
+
import type { Source } from '../request.js';
|
|
8
6
|
import { Request } from '../request.js';
|
|
9
|
-
import type {
|
|
10
|
-
|
|
7
|
+
import type { JournalEntry } from './transaction.js';
|
|
8
|
+
import type { RequestLoaderStatus } from './request-loader.js';
|
|
9
|
+
import type { IRequestManager, PacingSignal, RequestsLike } from './request-manager.js';
|
|
10
|
+
import type { RequestQueueStats } from './storage-stats.js';
|
|
11
|
+
import type { IStorage, StorageIdentifier } from './storage-instance-manager.js';
|
|
12
|
+
import type { StorageOpenOptions } from './utils.js';
|
|
11
13
|
/**
|
|
12
|
-
* Represents a
|
|
14
|
+
* Represents a queue of URLs to crawl, which is used for deep crawling of websites
|
|
15
|
+
* where you start with several URLs and then recursively
|
|
16
|
+
* follow links to other pages. The data structure supports both breadth-first and depth-first crawling orders.
|
|
17
|
+
*
|
|
18
|
+
* Each URL is represented using an instance of the {@link Request} class.
|
|
19
|
+
* The queue can only contain unique URLs. More precisely, it can only contain {@link Request} instances
|
|
20
|
+
* with distinct `uniqueKey` properties. By default, `uniqueKey` is generated from the URL, but it can also be overridden.
|
|
21
|
+
* To add a single URL multiple times to the queue,
|
|
22
|
+
* corresponding {@link Request} objects will need to have different `uniqueKey` properties.
|
|
23
|
+
*
|
|
24
|
+
* Do not instantiate this class directly, use the {@link RequestQueue.open} function instead.
|
|
25
|
+
*
|
|
26
|
+
* `RequestQueue` is used by {@link BasicCrawler}, {@link CheerioCrawler}, {@link PuppeteerCrawler}
|
|
27
|
+
* and {@link PlaywrightCrawler} as a source of URLs to crawl.
|
|
28
|
+
* Unlike {@link RequestList}, `RequestQueue` supports dynamic adding and removing of requests.
|
|
29
|
+
* On the other hand, the queue is not optimized for operations that add or remove a large number of URLs in a batch.
|
|
30
|
+
*
|
|
31
|
+
* **Example usage:**
|
|
32
|
+
*
|
|
33
|
+
* ```javascript
|
|
34
|
+
* // Open the default request queue associated with the crawler run
|
|
35
|
+
* const queue = await RequestQueue.open();
|
|
36
|
+
*
|
|
37
|
+
* // Open a named request queue
|
|
38
|
+
* const queueWithName = await RequestQueue.open('some-name');
|
|
39
|
+
*
|
|
40
|
+
* // Enqueue few requests
|
|
41
|
+
* await queue.addRequest({ url: 'http://example.com/aaa' });
|
|
42
|
+
* await queue.addRequest({ url: 'http://example.com/bbb' });
|
|
43
|
+
* await queue.addRequest({ url: 'http://example.com/foo/bar' }, { forefront: true });
|
|
44
|
+
* ```
|
|
45
|
+
* @category Sources
|
|
13
46
|
*/
|
|
14
|
-
export
|
|
47
|
+
export declare class RequestQueue implements IStorage, IRequestManager {
|
|
48
|
+
#private;
|
|
49
|
+
readonly id: string;
|
|
50
|
+
readonly name?: string;
|
|
51
|
+
readonly backend: RequestQueueBackend;
|
|
52
|
+
readonly log: CrawleeLogger;
|
|
15
53
|
/**
|
|
16
|
-
*
|
|
54
|
+
* Backend-independent usage counters tracked for this request queue (write operations and
|
|
55
|
+
* queue-head reads issued to the underlying storage backend). Counted per backend call.
|
|
17
56
|
*/
|
|
18
|
-
|
|
57
|
+
get stats(): RequestQueueStats;
|
|
19
58
|
/**
|
|
20
|
-
*
|
|
21
|
-
* would return `null`, otherwise it resolves to `false`.
|
|
22
|
-
* Note that even if the provider is empty, there might be some pending requests currently being processed.
|
|
23
|
-
*/
|
|
24
|
-
isEmpty(): Promise<boolean>;
|
|
25
|
-
/**
|
|
26
|
-
* Returns number of handled requests.
|
|
27
|
-
*/
|
|
28
|
-
handledCount(): Promise<number>;
|
|
29
|
-
/**
|
|
30
|
-
* Get the total number of requests known to the request manager.
|
|
31
|
-
*/
|
|
32
|
-
getTotalCount(): number;
|
|
33
|
-
/**
|
|
34
|
-
* Get an offline approximation of the number of pending requests.
|
|
35
|
-
*/
|
|
36
|
-
getPendingCount(): number;
|
|
37
|
-
/**
|
|
38
|
-
* Gets the next {@link Request} to process.
|
|
39
|
-
*
|
|
40
|
-
* The function's `Promise` resolves to `null` if there are no more
|
|
41
|
-
* requests to process.
|
|
42
|
-
*/
|
|
43
|
-
fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
44
|
-
/**
|
|
45
|
-
* Can be used to iterate over the `RequestManager` instance in a `for await .. of` loop.
|
|
46
|
-
* Provides an alternative for the repeated use of `fetchNextRequest`.
|
|
47
|
-
*/
|
|
48
|
-
[Symbol.asyncIterator](): AsyncGenerator<Request>;
|
|
49
|
-
/**
|
|
50
|
-
* Marks request as handled after successful processing.
|
|
51
|
-
*/
|
|
52
|
-
markRequestHandled(request: Request): Promise<RequestQueueOperationInfo | void | null>;
|
|
53
|
-
/**
|
|
54
|
-
* Reclaims request to the provider if its processing failed.
|
|
55
|
-
* The request will become available in the next `fetchNextRequest()`.
|
|
59
|
+
* @internal
|
|
56
60
|
*/
|
|
57
|
-
|
|
58
|
-
addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
|
|
59
|
-
addRequestsBatched(requests: RequestsLike, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
60
|
-
}
|
|
61
|
-
export declare abstract class RequestProvider implements IStorage, IRequestManager {
|
|
62
|
-
readonly config: Configuration;
|
|
63
|
-
id: string;
|
|
64
|
-
name?: string;
|
|
65
|
-
timeoutSecs: number;
|
|
66
|
-
clientKey: string;
|
|
67
|
-
client: RequestQueueClient;
|
|
68
|
-
protected proxyConfiguration?: ProxyConfiguration;
|
|
69
|
-
log: Log;
|
|
70
|
-
internalTimeoutMillis: number;
|
|
71
|
-
requestLockSecs: number;
|
|
72
|
-
assumedTotalCount: number;
|
|
73
|
-
assumedHandledCount: number;
|
|
74
|
-
private initialCount;
|
|
75
|
-
private initialHandledCount;
|
|
76
|
-
protected queueHeadIds: ListDictionary<string>;
|
|
77
|
-
protected requestCache: LruCache<RequestLruItem>;
|
|
78
|
-
protected recentlyHandledRequestsCache: LruCache<boolean>;
|
|
79
|
-
protected queuePausedForMigration: boolean;
|
|
80
|
-
protected lastActivity: Date;
|
|
81
|
-
protected isFinishedCalledWhileHeadWasNotEmpty: number;
|
|
82
|
-
protected inProgressRequestBatchCount: number;
|
|
83
|
-
protected httpClient?: BaseHttpClient;
|
|
84
|
-
constructor(options: InternalRequestProviderOptions, config?: Configuration);
|
|
61
|
+
constructor(options: RequestQueueOptions);
|
|
85
62
|
/**
|
|
86
|
-
* Returns
|
|
63
|
+
* Returns the total number of requests in the queue (i.e. pending + handled).
|
|
87
64
|
*
|
|
88
65
|
* Survives restarts and actor migrations.
|
|
89
66
|
*/
|
|
90
|
-
getTotalCount(): number
|
|
67
|
+
getTotalCount(): Promise<number>;
|
|
91
68
|
/**
|
|
92
|
-
* Returns
|
|
69
|
+
* Returns the total number of pending requests in the queue.
|
|
93
70
|
*
|
|
94
71
|
* Survives restarts and Actor migrations.
|
|
95
72
|
*/
|
|
96
|
-
getPendingCount(): number
|
|
73
|
+
getPendingCount(): Promise<number>;
|
|
97
74
|
/**
|
|
98
75
|
* Adds a request to the queue.
|
|
99
76
|
*
|
|
@@ -109,6 +86,8 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
109
86
|
* @param [options] Request queue operation options.
|
|
110
87
|
*/
|
|
111
88
|
addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
|
|
89
|
+
/** @internal */
|
|
90
|
+
commitJournalEntries(entries: JournalEntry[]): Promise<void>;
|
|
112
91
|
/**
|
|
113
92
|
* Adds requests to the queue in batches of 25. This method will wait till all the requests are added
|
|
114
93
|
* to the queue before resolving. You should prefer using `queue.addRequestsBatched()` or `crawler.addRequests()`
|
|
@@ -135,17 +114,17 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
135
114
|
*/
|
|
136
115
|
addRequestsBatched(requests: ReadonlyDeep<RequestsLike>, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
137
116
|
/**
|
|
138
|
-
* Gets the request from the queue specified by
|
|
117
|
+
* Gets the request from the queue specified by its `uniqueKey`.
|
|
139
118
|
*
|
|
140
|
-
* @param
|
|
119
|
+
* @param uniqueKey Unique key of the request.
|
|
141
120
|
* @returns Returns the request object, or `null` if it was not found.
|
|
142
121
|
*/
|
|
143
|
-
getRequest<T extends Dictionary = Dictionary>(
|
|
122
|
+
getRequest<T extends Dictionary = Dictionary>(uniqueKey: string): Promise<Request<T> | null>;
|
|
144
123
|
/**
|
|
145
124
|
* Returns a next request in the queue to be processed, or `null` if there are no more pending requests.
|
|
146
125
|
*
|
|
147
126
|
* Once you successfully finish processing of the request, you need to call
|
|
148
|
-
* {@link RequestQueue.
|
|
127
|
+
* {@link RequestQueue.markRequestAsHandled}
|
|
149
128
|
* to mark the request as handled in the queue. If there was some error in processing the request,
|
|
150
129
|
* call {@link RequestQueue.reclaimRequest} instead,
|
|
151
130
|
* so that the queue will give the request to some other consumer in another call to the `fetchNextRequest` function.
|
|
@@ -153,19 +132,19 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
153
132
|
* Note that the `null` return value doesn't mean the queue processing finished,
|
|
154
133
|
* it means there are currently no pending requests.
|
|
155
134
|
* To check whether all requests in queue were finished,
|
|
156
|
-
* use {@link RequestQueue.
|
|
135
|
+
* use {@link RequestQueue.checkReadiness} instead.
|
|
157
136
|
*
|
|
158
137
|
* @returns
|
|
159
138
|
* Returns the request object or `null` if there are no more pending requests.
|
|
160
139
|
*/
|
|
161
|
-
|
|
140
|
+
fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
162
141
|
/**
|
|
163
142
|
* Marks a request that was previously returned by the
|
|
164
143
|
* {@link RequestQueue.fetchNextRequest}
|
|
165
144
|
* function as handled after successful processing.
|
|
166
145
|
* Handled requests will never again be returned by the `fetchNextRequest` function.
|
|
167
146
|
*/
|
|
168
|
-
|
|
147
|
+
markRequestAsHandled(request: Request): Promise<RequestQueueOperationInfo | null>;
|
|
169
148
|
/**
|
|
170
149
|
* Reclaims a failed request back to the queue, so that it can be returned for processing later again
|
|
171
150
|
* by another call to {@link RequestQueue.fetchNextRequest}.
|
|
@@ -173,35 +152,49 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
173
152
|
* For example, this lets you store the number of retries or error messages for the request.
|
|
174
153
|
*/
|
|
175
154
|
reclaimRequest(request: Request, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo | null>;
|
|
176
|
-
protected abstract ensureHeadIsNonEmpty(): Promise<void>;
|
|
177
155
|
/**
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
* If you need to ensure that there is no activity in the queue, use {@link RequestQueue.isFinished}.
|
|
156
|
+
* A queue hands requests out as fast as they are asked for; pacing is a job for a manager wrapped around it,
|
|
157
|
+
* such as {@link ThrottlingRequestManager}.
|
|
158
|
+
* @inheritdoc
|
|
182
159
|
*/
|
|
183
|
-
|
|
160
|
+
recordPacingSignal(_signal: PacingSignal): boolean;
|
|
184
161
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
162
|
+
* Reports whether the queue has a request to hand over, is waiting on one, or is done.
|
|
163
|
+
*
|
|
164
|
+
* `waiting` means requests are in progress (fetched but not yet handled or reclaimed, possibly by another
|
|
165
|
+
* client sharing the queue) or a background add is still landing; neither has a clock, so no `readyAt`.
|
|
166
|
+
*
|
|
167
|
+
* Due to the nature of distributed storage used by the queue, `finished` may occasionally arrive a probe or
|
|
168
|
+
* two late, but it is never reported early.
|
|
189
169
|
*/
|
|
190
|
-
|
|
191
|
-
protected _reset(): void;
|
|
170
|
+
checkReadiness(): Promise<RequestLoaderStatus>;
|
|
192
171
|
/**
|
|
193
|
-
*
|
|
172
|
+
* Tells the queue how long a consumer expects to hold a fetched request before marking it handled
|
|
173
|
+
* or reclaiming it (typically the request-handler timeout plus padding), so that a storage backend
|
|
174
|
+
* that reserves requests via locking does not hand the same request out again while it is still
|
|
175
|
+
* being processed.
|
|
176
|
+
*
|
|
177
|
+
* Several consumers may share one queue (and therefore one client) in a single process, so we only
|
|
178
|
+
* ever raise the reservation duration, never lower it — otherwise a short-lived consumer could cut
|
|
179
|
+
* short the reservation of a long-lived one and have its in-flight request stolen.
|
|
194
180
|
*/
|
|
195
|
-
|
|
181
|
+
setExpectedRequestProcessingTimeSecs(secs: number): Promise<void>;
|
|
196
182
|
/**
|
|
197
|
-
*
|
|
183
|
+
* @inheritdoc
|
|
184
|
+
* Unlike {@link RequestQueue.setExpectedRequestProcessingTimeSecs}, which sizes every future lock,
|
|
185
|
+
* this only touches the one request it is given.
|
|
198
186
|
*/
|
|
199
|
-
|
|
187
|
+
extendRequestProcessingTimeSecs(request: Request, secs: number): Promise<boolean>;
|
|
200
188
|
/**
|
|
201
189
|
* Removes the queue either from the Apify Cloud storage or from the local database,
|
|
202
190
|
* depending on the mode of operation.
|
|
203
191
|
*/
|
|
204
192
|
drop(): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Remove all requests from the queue but keep the queue itself, resetting it
|
|
195
|
+
* so it can be reused (e.g. across multiple `crawler.run()` calls).
|
|
196
|
+
*/
|
|
197
|
+
purge(): Promise<void>;
|
|
205
198
|
/**
|
|
206
199
|
* @inheritdoc
|
|
207
200
|
*/
|
|
@@ -216,22 +209,15 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
216
209
|
* ```
|
|
217
210
|
* @inheritdoc
|
|
218
211
|
*/
|
|
219
|
-
|
|
212
|
+
getHandledCount(): Promise<number>;
|
|
220
213
|
/**
|
|
221
214
|
* Returns an object containing general information about the request queue.
|
|
222
215
|
*
|
|
223
|
-
* The function returns the same object as the Apify API Client's
|
|
224
|
-
* [getQueue](https://docs.apify.com/api/apify-client-js/latest#ApifyClient-requestQueues)
|
|
225
|
-
* function, which in turn calls the
|
|
226
|
-
* [Get request queue](https://apify.com/docs/api/v2#/reference/request-queues/queue/get-request-queue)
|
|
227
|
-
* API endpoint.
|
|
228
|
-
*
|
|
229
216
|
* **Example:**
|
|
230
217
|
* ```
|
|
231
218
|
* {
|
|
232
219
|
* id: "WkzbQMuFYuamGv3YF",
|
|
233
220
|
* name: "my-queue",
|
|
234
|
-
* userId: "wRsJZtadYvn4mBZmm",
|
|
235
221
|
* createdAt: new Date("2015-12-12T07:34:14.202Z"),
|
|
236
222
|
* modifiedAt: new Date("2015-12-13T08:36:13.202Z"),
|
|
237
223
|
* accessedAt: new Date("2015-12-14T08:36:13.202Z"),
|
|
@@ -240,20 +226,10 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
240
226
|
* pendingRequestCount: 20,
|
|
241
227
|
* }
|
|
242
228
|
* ```
|
|
229
|
+
*
|
|
230
|
+
* @throws If the underlying storage no longer exists (e.g. it was deleted externally).
|
|
243
231
|
*/
|
|
244
|
-
getInfo(): Promise<RequestQueueInfo
|
|
245
|
-
/**
|
|
246
|
-
* Fetches URLs from requestsFromUrl and returns them in format of list of requests
|
|
247
|
-
*/
|
|
248
|
-
protected _fetchRequestsFromUrl(source: InternalSource): Promise<RequestOptions[]>;
|
|
249
|
-
/**
|
|
250
|
-
* Adds all fetched requests from a URL from a remote resource.
|
|
251
|
-
*/
|
|
252
|
-
protected _addFetchedRequests(source: InternalSource, fetchedRequests: RequestOptions[], options: RequestQueueOperationOptions): Promise<ProcessedRequest[]>;
|
|
253
|
-
/**
|
|
254
|
-
* @internal wraps public utility for mocking purposes
|
|
255
|
-
*/
|
|
256
|
-
private _downloadListOfUrls;
|
|
232
|
+
getInfo(): Promise<RequestQueueInfo>;
|
|
257
233
|
/**
|
|
258
234
|
* Opens a request queue and returns a promise resolving to an instance
|
|
259
235
|
* of the {@link RequestQueue} class.
|
|
@@ -265,44 +241,25 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
265
241
|
*
|
|
266
242
|
* For more details and code examples, see the {@link RequestQueue} class.
|
|
267
243
|
*
|
|
268
|
-
* @param [
|
|
269
|
-
* ID or name of the request queue to be opened. If
|
|
270
|
-
*
|
|
244
|
+
* @param [identifier]
|
|
245
|
+
* ID or name of the request queue to be opened. If a string is provided, it will first be
|
|
246
|
+
* looked up as an ID; if no such storage exists, it will be treated as a name.
|
|
247
|
+
* If `null` or `undefined`, the function returns the default request queue associated with the crawler run.
|
|
271
248
|
* @param [options] Open Request Queue options.
|
|
272
249
|
*/
|
|
273
|
-
static open(
|
|
274
|
-
}
|
|
275
|
-
interface RequestLruItem {
|
|
276
|
-
uniqueKey: string;
|
|
277
|
-
isHandled: boolean;
|
|
278
|
-
id: string;
|
|
279
|
-
hydrated: Request | null;
|
|
280
|
-
lockExpiresAt: number | null;
|
|
281
|
-
forefront: boolean;
|
|
250
|
+
static open(identifier?: string | StorageIdentifier | null, options?: StorageOpenOptions): Promise<RequestQueue>;
|
|
282
251
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
252
|
+
/** @internal */
|
|
253
|
+
export interface RequestQueueOptions {
|
|
254
|
+
/** Resolved metadata for the request queue, as returned by the backend's `getMetadata()`. */
|
|
255
|
+
metadata: RequestQueueInfo;
|
|
256
|
+
backend: RequestQueueBackend;
|
|
287
257
|
/**
|
|
288
258
|
* Used to pass the proxy configuration for the `requestsFromUrl` objects.
|
|
289
259
|
* Takes advantage of the internal address rotation and authentication process.
|
|
290
260
|
* If undefined, the `requestsFromUrl` requests will be made without proxy.
|
|
291
261
|
*/
|
|
292
|
-
proxyConfiguration?:
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* @deprecated Use {@link RequestProviderOptions} instead.
|
|
296
|
-
*/
|
|
297
|
-
export interface RequestQueueOptions extends RequestProviderOptions {
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* @internal
|
|
301
|
-
*/
|
|
302
|
-
export interface InternalRequestProviderOptions extends RequestProviderOptions {
|
|
303
|
-
logPrefix: string;
|
|
304
|
-
requestCacheMaxSize: number;
|
|
305
|
-
recentlyHandledRequestsMaxSize: number;
|
|
262
|
+
proxyConfiguration?: IProxyConfiguration;
|
|
306
263
|
}
|
|
307
264
|
export interface RequestQueueOperationOptions {
|
|
308
265
|
/**
|
|
@@ -326,9 +283,6 @@ export interface RequestQueueOperationOptions {
|
|
|
326
283
|
*/
|
|
327
284
|
cache?: boolean;
|
|
328
285
|
}
|
|
329
|
-
/**
|
|
330
|
-
* @internal
|
|
331
|
-
*/
|
|
332
286
|
export interface RequestQueueOperationInfo extends QueueOperationInfo {
|
|
333
287
|
uniqueKey: string;
|
|
334
288
|
forefront: boolean;
|
|
@@ -347,6 +301,15 @@ export interface AddRequestsBatchedOptions extends RequestQueueOperationOptions
|
|
|
347
301
|
* @default 1000
|
|
348
302
|
*/
|
|
349
303
|
waitBetweenBatchesMillis?: number;
|
|
304
|
+
/**
|
|
305
|
+
* If set, only this many *actually new* requests (i.e. not already present in the queue) will be added.
|
|
306
|
+
* Once the budget is reached, remaining requests from the iterable are left unconsumed, or collected in
|
|
307
|
+
* {@link AddRequestsBatchedResult.requestsOverLimit|`requestsOverLimit`} if
|
|
308
|
+
* {@link AddRequestsBatchedOptions.waitForAllRequestsToBeAdded|`waitForAllRequestsToBeAdded`} is set.
|
|
309
|
+
*
|
|
310
|
+
* This is useful in combination with `maxRequestsPerCrawl` to avoid duplicate URLs consuming the budget.
|
|
311
|
+
*/
|
|
312
|
+
maxNewRequests?: number;
|
|
350
313
|
}
|
|
351
314
|
export interface AddRequestsBatchedResult {
|
|
352
315
|
addedRequests: ProcessedRequest[];
|
|
@@ -367,6 +330,11 @@ export interface AddRequestsBatchedResult {
|
|
|
367
330
|
* ```
|
|
368
331
|
*/
|
|
369
332
|
waitForAllRequestsToBeAdded: Promise<ProcessedRequest[]>;
|
|
333
|
+
/**
|
|
334
|
+
* Requests from the input that were not added to the queue because the
|
|
335
|
+
* {@link AddRequestsBatchedOptions.maxNewRequests|`maxNewRequests`} budget was reached.
|
|
336
|
+
* `undefined` unless both `maxNewRequests` and
|
|
337
|
+
* {@link AddRequestsBatchedOptions.waitForAllRequestsToBeAdded|`waitForAllRequestsToBeAdded`} are set.
|
|
338
|
+
*/
|
|
339
|
+
requestsOverLimit?: Source[];
|
|
370
340
|
}
|
|
371
|
-
export {};
|
|
372
|
-
//# sourceMappingURL=request_provider.d.ts.map
|