@crawlee/core 4.0.0-beta.28 → 4.0.0-beta.280
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 +75 -167
- package/configuration.js +164 -140
- package/debug.d.ts +36 -0
- package/debug.js +70 -0
- package/errors.d.ts +40 -19
- package/errors.js +52 -30
- package/events/{event_manager.d.ts → event-manager.d.ts} +29 -6
- package/events/{event_manager.js → event-manager.js} +10 -9
- package/events/index.d.ts +3 -3
- package/events/index.js +2 -3
- package/events/{local_event_manager.d.ts → local-event-manager.d.ts} +3 -10
- 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 -13
- package/index.js +10 -12
- 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 → service-locator.d.ts} +66 -37
- 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 -151
- 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} +32 -171
- package/storages/{request_list.js → request-list.js} +276 -253
- 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 -161
- 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 -17
- 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 -298
- package/autoscaling/autoscaled_pool.d.ts.map +0 -1
- package/autoscaling/autoscaled_pool.js +0 -527
- 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 -179
- package/autoscaling/snapshotter.d.ts.map +0 -1
- package/autoscaling/snapshotter.js +0 -279
- package/autoscaling/snapshotter.js.map +0 -1
- package/autoscaling/system_status.d.ts +0 -178
- package/autoscaling/system_status.d.ts.map +0 -1
- package/autoscaling/system_status.js +0 -168
- 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 -204
- package/crawlers/statistics.d.ts.map +0 -1
- package/crawlers/statistics.js +0 -350
- 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.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.map +0 -1
- package/events/local_event_manager.js +0 -93
- 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 -122
- package/recoverable_state.d.ts.map +0 -1
- package/recoverable_state.js +0 -138
- 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/service_locator.d.ts.map +0 -1
- package/service_locator.js +0 -252
- package/service_locator.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 -256
- package/session_pool/session_pool.d.ts.map +0 -1
- package/session_pool/session_pool.js +0 -386
- 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 -513
- 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 -592
- 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 -437
- package/storages/request_queue_v2.js.map +0 -1
- package/storages/sitemap_request_list.d.ts +0 -245
- 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 -60
- package/storages/storage_manager.d.ts.map +0 -1
- package/storages/storage_manager.js +0 -95
- 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,101 +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 { EventManager } from '../events/event_manager.js';
|
|
7
|
-
import type { ProxyConfiguration } from '../proxy_configuration.js';
|
|
8
|
-
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';
|
|
9
6
|
import { Request } from '../request.js';
|
|
10
|
-
import type {
|
|
11
|
-
|
|
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';
|
|
12
13
|
/**
|
|
13
|
-
* 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
|
|
14
46
|
*/
|
|
15
|
-
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;
|
|
16
53
|
/**
|
|
17
|
-
*
|
|
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.
|
|
18
56
|
*/
|
|
19
|
-
|
|
57
|
+
get stats(): RequestQueueStats;
|
|
20
58
|
/**
|
|
21
|
-
*
|
|
22
|
-
* would return `null`, otherwise it resolves to `false`.
|
|
23
|
-
* Note that even if the provider is empty, there might be some pending requests currently being processed.
|
|
24
|
-
*/
|
|
25
|
-
isEmpty(): Promise<boolean>;
|
|
26
|
-
/**
|
|
27
|
-
* Returns number of handled requests.
|
|
28
|
-
*/
|
|
29
|
-
handledCount(): Promise<number>;
|
|
30
|
-
/**
|
|
31
|
-
* Get the total number of requests known to the request manager.
|
|
32
|
-
*/
|
|
33
|
-
getTotalCount(): number;
|
|
34
|
-
/**
|
|
35
|
-
* Get an offline approximation of the number of pending requests.
|
|
36
|
-
*/
|
|
37
|
-
getPendingCount(): number;
|
|
38
|
-
/**
|
|
39
|
-
* Gets the next {@link Request} to process.
|
|
40
|
-
*
|
|
41
|
-
* The function's `Promise` resolves to `null` if there are no more
|
|
42
|
-
* requests to process.
|
|
43
|
-
*/
|
|
44
|
-
fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
45
|
-
/**
|
|
46
|
-
* Can be used to iterate over the `RequestManager` instance in a `for await .. of` loop.
|
|
47
|
-
* Provides an alternative for the repeated use of `fetchNextRequest`.
|
|
48
|
-
*/
|
|
49
|
-
[Symbol.asyncIterator](): AsyncGenerator<Request>;
|
|
50
|
-
/**
|
|
51
|
-
* Marks request as handled after successful processing.
|
|
52
|
-
*/
|
|
53
|
-
markRequestHandled(request: Request): Promise<RequestQueueOperationInfo | void | null>;
|
|
54
|
-
/**
|
|
55
|
-
* Reclaims request to the provider if its processing failed.
|
|
56
|
-
* The request will become available in the next `fetchNextRequest()`.
|
|
59
|
+
* @internal
|
|
57
60
|
*/
|
|
58
|
-
|
|
59
|
-
addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
|
|
60
|
-
addRequestsBatched(requests: RequestsLike, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
61
|
-
}
|
|
62
|
-
export declare abstract class RequestProvider implements IStorage, IRequestManager {
|
|
63
|
-
protected readonly config: Configuration;
|
|
64
|
-
id: string;
|
|
65
|
-
name?: string;
|
|
66
|
-
timeoutSecs: number;
|
|
67
|
-
clientKey: string;
|
|
68
|
-
client: RequestQueueClient;
|
|
69
|
-
protected proxyConfiguration?: ProxyConfiguration;
|
|
70
|
-
log: Log;
|
|
71
|
-
internalTimeoutMillis: number;
|
|
72
|
-
requestLockSecs: number;
|
|
73
|
-
assumedTotalCount: number;
|
|
74
|
-
assumedHandledCount: number;
|
|
75
|
-
private initialCount;
|
|
76
|
-
private initialHandledCount;
|
|
77
|
-
protected queueHeadIds: ListDictionary<string>;
|
|
78
|
-
protected requestCache: LruCache<RequestLruItem>;
|
|
79
|
-
protected recentlyHandledRequestsCache: LruCache<boolean>;
|
|
80
|
-
protected queuePausedForMigration: boolean;
|
|
81
|
-
protected lastActivity: Date;
|
|
82
|
-
protected isFinishedCalledWhileHeadWasNotEmpty: number;
|
|
83
|
-
protected inProgressRequestBatchCount: number;
|
|
84
|
-
protected httpClient?: BaseHttpClient;
|
|
85
|
-
protected readonly events: EventManager;
|
|
86
|
-
constructor(options: InternalRequestProviderOptions, config: Configuration);
|
|
61
|
+
constructor(options: RequestQueueOptions);
|
|
87
62
|
/**
|
|
88
|
-
* Returns
|
|
63
|
+
* Returns the total number of requests in the queue (i.e. pending + handled).
|
|
89
64
|
*
|
|
90
65
|
* Survives restarts and actor migrations.
|
|
91
66
|
*/
|
|
92
|
-
getTotalCount(): number
|
|
67
|
+
getTotalCount(): Promise<number>;
|
|
93
68
|
/**
|
|
94
|
-
* Returns
|
|
69
|
+
* Returns the total number of pending requests in the queue.
|
|
95
70
|
*
|
|
96
71
|
* Survives restarts and Actor migrations.
|
|
97
72
|
*/
|
|
98
|
-
getPendingCount(): number
|
|
73
|
+
getPendingCount(): Promise<number>;
|
|
99
74
|
/**
|
|
100
75
|
* Adds a request to the queue.
|
|
101
76
|
*
|
|
@@ -111,6 +86,8 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
111
86
|
* @param [options] Request queue operation options.
|
|
112
87
|
*/
|
|
113
88
|
addRequest(requestLike: Source, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo>;
|
|
89
|
+
/** @internal */
|
|
90
|
+
commitJournalEntries(entries: JournalEntry[]): Promise<void>;
|
|
114
91
|
/**
|
|
115
92
|
* Adds requests to the queue in batches of 25. This method will wait till all the requests are added
|
|
116
93
|
* to the queue before resolving. You should prefer using `queue.addRequestsBatched()` or `crawler.addRequests()`
|
|
@@ -137,17 +114,17 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
137
114
|
*/
|
|
138
115
|
addRequestsBatched(requests: ReadonlyDeep<RequestsLike>, options?: AddRequestsBatchedOptions): Promise<AddRequestsBatchedResult>;
|
|
139
116
|
/**
|
|
140
|
-
* Gets the request from the queue specified by
|
|
117
|
+
* Gets the request from the queue specified by its `uniqueKey`.
|
|
141
118
|
*
|
|
142
|
-
* @param
|
|
119
|
+
* @param uniqueKey Unique key of the request.
|
|
143
120
|
* @returns Returns the request object, or `null` if it was not found.
|
|
144
121
|
*/
|
|
145
|
-
getRequest<T extends Dictionary = Dictionary>(
|
|
122
|
+
getRequest<T extends Dictionary = Dictionary>(uniqueKey: string): Promise<Request<T> | null>;
|
|
146
123
|
/**
|
|
147
124
|
* Returns a next request in the queue to be processed, or `null` if there are no more pending requests.
|
|
148
125
|
*
|
|
149
126
|
* Once you successfully finish processing of the request, you need to call
|
|
150
|
-
* {@link RequestQueue.
|
|
127
|
+
* {@link RequestQueue.markRequestAsHandled}
|
|
151
128
|
* to mark the request as handled in the queue. If there was some error in processing the request,
|
|
152
129
|
* call {@link RequestQueue.reclaimRequest} instead,
|
|
153
130
|
* so that the queue will give the request to some other consumer in another call to the `fetchNextRequest` function.
|
|
@@ -155,19 +132,19 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
155
132
|
* Note that the `null` return value doesn't mean the queue processing finished,
|
|
156
133
|
* it means there are currently no pending requests.
|
|
157
134
|
* To check whether all requests in queue were finished,
|
|
158
|
-
* use {@link RequestQueue.
|
|
135
|
+
* use {@link RequestQueue.checkReadiness} instead.
|
|
159
136
|
*
|
|
160
137
|
* @returns
|
|
161
138
|
* Returns the request object or `null` if there are no more pending requests.
|
|
162
139
|
*/
|
|
163
|
-
|
|
140
|
+
fetchNextRequest<T extends Dictionary = Dictionary>(): Promise<Request<T> | null>;
|
|
164
141
|
/**
|
|
165
142
|
* Marks a request that was previously returned by the
|
|
166
143
|
* {@link RequestQueue.fetchNextRequest}
|
|
167
144
|
* function as handled after successful processing.
|
|
168
145
|
* Handled requests will never again be returned by the `fetchNextRequest` function.
|
|
169
146
|
*/
|
|
170
|
-
|
|
147
|
+
markRequestAsHandled(request: Request): Promise<RequestQueueOperationInfo | null>;
|
|
171
148
|
/**
|
|
172
149
|
* Reclaims a failed request back to the queue, so that it can be returned for processing later again
|
|
173
150
|
* by another call to {@link RequestQueue.fetchNextRequest}.
|
|
@@ -175,35 +152,49 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
175
152
|
* For example, this lets you store the number of retries or error messages for the request.
|
|
176
153
|
*/
|
|
177
154
|
reclaimRequest(request: Request, options?: RequestQueueOperationOptions): Promise<RequestQueueOperationInfo | null>;
|
|
178
|
-
protected abstract ensureHeadIsNonEmpty(): Promise<void>;
|
|
179
155
|
/**
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* 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
|
|
184
159
|
*/
|
|
185
|
-
|
|
160
|
+
recordPacingSignal(_signal: PacingSignal): boolean;
|
|
186
161
|
/**
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
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.
|
|
191
169
|
*/
|
|
192
|
-
|
|
193
|
-
protected _reset(): void;
|
|
170
|
+
checkReadiness(): Promise<RequestLoaderStatus>;
|
|
194
171
|
/**
|
|
195
|
-
*
|
|
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.
|
|
196
180
|
*/
|
|
197
|
-
|
|
181
|
+
setExpectedRequestProcessingTime(processingTimeSecs: number): Promise<void>;
|
|
198
182
|
/**
|
|
199
|
-
*
|
|
183
|
+
* @inheritdoc
|
|
184
|
+
* Unlike {@link RequestQueue.setExpectedRequestProcessingTime}, which sizes every future lock,
|
|
185
|
+
* this only touches the one request it is given.
|
|
200
186
|
*/
|
|
201
|
-
|
|
187
|
+
extendRequestProcessingTime(request: Request, extensionSecs: number): Promise<boolean>;
|
|
202
188
|
/**
|
|
203
189
|
* Removes the queue either from the Apify Cloud storage or from the local database,
|
|
204
190
|
* depending on the mode of operation.
|
|
205
191
|
*/
|
|
206
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>;
|
|
207
198
|
/**
|
|
208
199
|
* @inheritdoc
|
|
209
200
|
*/
|
|
@@ -218,22 +209,15 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
218
209
|
* ```
|
|
219
210
|
* @inheritdoc
|
|
220
211
|
*/
|
|
221
|
-
|
|
212
|
+
getHandledCount(): Promise<number>;
|
|
222
213
|
/**
|
|
223
214
|
* Returns an object containing general information about the request queue.
|
|
224
215
|
*
|
|
225
|
-
* The function returns the same object as the Apify API Client's
|
|
226
|
-
* [getQueue](https://docs.apify.com/api/apify-client-js/latest#ApifyClient-requestQueues)
|
|
227
|
-
* function, which in turn calls the
|
|
228
|
-
* [Get request queue](https://apify.com/docs/api/v2#/reference/request-queues/queue/get-request-queue)
|
|
229
|
-
* API endpoint.
|
|
230
|
-
*
|
|
231
216
|
* **Example:**
|
|
232
217
|
* ```
|
|
233
218
|
* {
|
|
234
219
|
* id: "WkzbQMuFYuamGv3YF",
|
|
235
220
|
* name: "my-queue",
|
|
236
|
-
* userId: "wRsJZtadYvn4mBZmm",
|
|
237
221
|
* createdAt: new Date("2015-12-12T07:34:14.202Z"),
|
|
238
222
|
* modifiedAt: new Date("2015-12-13T08:36:13.202Z"),
|
|
239
223
|
* accessedAt: new Date("2015-12-14T08:36:13.202Z"),
|
|
@@ -242,20 +226,10 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
242
226
|
* pendingRequestCount: 20,
|
|
243
227
|
* }
|
|
244
228
|
* ```
|
|
229
|
+
*
|
|
230
|
+
* @throws If the underlying storage no longer exists (e.g. it was deleted externally).
|
|
245
231
|
*/
|
|
246
|
-
getInfo(): Promise<RequestQueueInfo
|
|
247
|
-
/**
|
|
248
|
-
* Fetches URLs from requestsFromUrl and returns them in format of list of requests
|
|
249
|
-
*/
|
|
250
|
-
protected _fetchRequestsFromUrl(source: InternalSource): Promise<RequestOptions[]>;
|
|
251
|
-
/**
|
|
252
|
-
* Adds all fetched requests from a URL from a remote resource.
|
|
253
|
-
*/
|
|
254
|
-
protected _addFetchedRequests(source: InternalSource, fetchedRequests: RequestOptions[], options: RequestQueueOperationOptions): Promise<ProcessedRequest[]>;
|
|
255
|
-
/**
|
|
256
|
-
* @internal wraps public utility for mocking purposes
|
|
257
|
-
*/
|
|
258
|
-
private _downloadListOfUrls;
|
|
232
|
+
getInfo(): Promise<RequestQueueInfo>;
|
|
259
233
|
/**
|
|
260
234
|
* Opens a request queue and returns a promise resolving to an instance
|
|
261
235
|
* of the {@link RequestQueue} class.
|
|
@@ -267,44 +241,25 @@ export declare abstract class RequestProvider implements IStorage, IRequestManag
|
|
|
267
241
|
*
|
|
268
242
|
* For more details and code examples, see the {@link RequestQueue} class.
|
|
269
243
|
*
|
|
270
|
-
* @param [
|
|
271
|
-
* ID or name of the request queue to be opened. If
|
|
272
|
-
*
|
|
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.
|
|
273
248
|
* @param [options] Open Request Queue options.
|
|
274
249
|
*/
|
|
275
|
-
static open(
|
|
276
|
-
}
|
|
277
|
-
interface RequestLruItem {
|
|
278
|
-
uniqueKey: string;
|
|
279
|
-
isHandled: boolean;
|
|
280
|
-
id: string;
|
|
281
|
-
hydrated: Request | null;
|
|
282
|
-
lockExpiresAt: number | null;
|
|
283
|
-
forefront: boolean;
|
|
250
|
+
static open(identifier?: string | StorageIdentifier | null, options?: StorageOpenOptions): Promise<RequestQueue>;
|
|
284
251
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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;
|
|
289
257
|
/**
|
|
290
258
|
* Used to pass the proxy configuration for the `requestsFromUrl` objects.
|
|
291
259
|
* Takes advantage of the internal address rotation and authentication process.
|
|
292
260
|
* If undefined, the `requestsFromUrl` requests will be made without proxy.
|
|
293
261
|
*/
|
|
294
|
-
proxyConfiguration?:
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* @deprecated Use {@link RequestProviderOptions} instead.
|
|
298
|
-
*/
|
|
299
|
-
export interface RequestQueueOptions extends RequestProviderOptions {
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* @internal
|
|
303
|
-
*/
|
|
304
|
-
export interface InternalRequestProviderOptions extends RequestProviderOptions {
|
|
305
|
-
logPrefix: string;
|
|
306
|
-
requestCacheMaxSize: number;
|
|
307
|
-
recentlyHandledRequestsMaxSize: number;
|
|
262
|
+
proxyConfiguration?: IProxyConfiguration;
|
|
308
263
|
}
|
|
309
264
|
export interface RequestQueueOperationOptions {
|
|
310
265
|
/**
|
|
@@ -328,9 +283,6 @@ export interface RequestQueueOperationOptions {
|
|
|
328
283
|
*/
|
|
329
284
|
cache?: boolean;
|
|
330
285
|
}
|
|
331
|
-
/**
|
|
332
|
-
* @internal
|
|
333
|
-
*/
|
|
334
286
|
export interface RequestQueueOperationInfo extends QueueOperationInfo {
|
|
335
287
|
uniqueKey: string;
|
|
336
288
|
forefront: boolean;
|
|
@@ -349,6 +301,15 @@ export interface AddRequestsBatchedOptions extends RequestQueueOperationOptions
|
|
|
349
301
|
* @default 1000
|
|
350
302
|
*/
|
|
351
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;
|
|
352
313
|
}
|
|
353
314
|
export interface AddRequestsBatchedResult {
|
|
354
315
|
addedRequests: ProcessedRequest[];
|
|
@@ -369,6 +330,11 @@ export interface AddRequestsBatchedResult {
|
|
|
369
330
|
* ```
|
|
370
331
|
*/
|
|
371
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[];
|
|
372
340
|
}
|
|
373
|
-
export {};
|
|
374
|
-
//# sourceMappingURL=request_provider.d.ts.map
|