Skip to content

Commit 5433c7a

Browse files
feat: added residential GBs and residential GBs per request
1 parent f7cb1a3 commit 5433c7a

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

starter/src/startRunAndPool.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { Actor } from 'apify';
1+
import { Actor, ActorRun } from 'apify';
22

3-
import type { PreparedActorConfig, ActorCheckSimplifiedOutput } from './typedefs.js';
3+
import type { PreparedActorConfig, ActorCheckSimplifiedOutput, FixedActorRun } from './typedefs.js';
44

55
export async function startRun(run: PreparedActorConfig) {
66
const client = Actor.newClient();
@@ -13,13 +13,20 @@ export async function waitForRunToFinishAndPushData(runConfig: PreparedActorConf
1313
const client = Actor.newClient();
1414
const run = client.run(runConfig.runId!);
1515

16-
const finishedRun = await run.waitForFinish();
17-
const { computeUnits } = finishedRun.stats;
16+
const finishedRun = await run.waitForFinish() as FixedActorRun;
17+
const {
18+
ACTOR_COMPUTE_UNITS: computeUnits,
19+
PROXY_RESIDENTIAL_TRANSFER_GBYTES: residentialGBs,
20+
} = finishedRun.usage;
1821

1922
const value = (await run.keyValueStore().getRecord('OUTPUT'))!.value as ActorCheckSimplifiedOutput;
2023

2124
value.computeUnitsUsedForThisCheck = Number(computeUnits.toFixed(4));
2225
value.pagesPerComputeUnit = Number((value.totalPages / computeUnits).toFixed(2));
26+
value.computeUnitsPerRequest = Number((computeUnits / value.totalPages).toFixed(6));
27+
// 8 decimals gives all the precision we need (level of 10 Bytes)
28+
value.residentialGBs = Number(residentialGBs.toFixed(8));
29+
value.residentialGBsPerRequest = Number((residentialGBs / value.totalPages).toFixed(8));
2330
value.proxyUsed = runConfig.proxyUsed;
2431

2532
if (runConfig.input['playwright.chrome']) {

starter/src/typedefs.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { ActorRun } from "apify";
2+
13
export interface FrontendActorState {
24
totalUrls: number;
35
runConfigurations: PreparedActorConfig[];
@@ -99,7 +101,10 @@ export interface ActorCheckDetailedOutput {
99101
playwrightBrowser?: 'chrome' | 'firefox' | 'webkit';
100102
computeUnitsUsedForThisCheck?: number;
101103
// (totalPages.length / computeUnitsUsedForThisCheck) yields the amount of pages checkable per compute unit
102-
pagesPerComputeUnit?: number;
104+
pagesPerComputeUnit: number;
105+
computeUnitsPerRequest: number;
106+
residentialGBs: number;
107+
residentialGBsPerRequest: number;
103108

104109
// URLs
105110
url: string;
@@ -133,3 +138,20 @@ export type ActorCheckSimplifiedOutput = {
133138
? Record<number, number>
134139
: ActorCheckDetailedOutput[K];
135140
};
141+
142+
export interface FixedActorRun extends ActorRun {
143+
usage: {
144+
ACTOR_COMPUTE_UNITS: number,
145+
DATASET_READS: number,
146+
DATASET_WRITES: number,
147+
KEY_VALUE_STORE_READS: number,
148+
KEY_VALUE_STORE_WRITES: number,
149+
KEY_VALUE_STORE_LISTS: number,
150+
REQUEST_QUEUE_READS: number,
151+
REQUEST_QUEUE_WRITES: number,
152+
DATA_TRANSFER_INTERNAL_GBYTES: number,
153+
DATA_TRANSFER_EXTERNAL_GBYTES: number,
154+
PROXY_RESIDENTIAL_TRANSFER_GBYTES: number,
155+
PROXY_SERPS: number,
156+
}
157+
};

0 commit comments

Comments
 (0)