Spaces:
Build error
Build error
fix
Browse files
backend/functions/.puppeteerrc.cjs
CHANGED
|
@@ -4,7 +4,7 @@ let config = {};
|
|
| 4 |
if (!process.env.FUNCTIONS_EMULATOR) {
|
| 5 |
config = {
|
| 6 |
// Changes the cache location for Puppeteer.
|
| 7 |
-
cacheDirectory: join(__dirname, '
|
| 8 |
};
|
| 9 |
}
|
| 10 |
|
|
|
|
| 4 |
if (!process.env.FUNCTIONS_EMULATOR) {
|
| 5 |
config = {
|
| 6 |
// Changes the cache location for Puppeteer.
|
| 7 |
+
cacheDirectory: join(__dirname, 'puppeteer'),
|
| 8 |
};
|
| 9 |
}
|
| 10 |
|
backend/functions/src/cloud-functions/crawler.ts
CHANGED
|
@@ -65,9 +65,9 @@ ${this.content}
|
|
| 65 |
})
|
| 66 |
@CloudHTTPv2({
|
| 67 |
runtime: {
|
| 68 |
-
memory: '
|
| 69 |
timeoutSeconds: 540,
|
| 70 |
-
concurrency:
|
| 71 |
},
|
| 72 |
httpMethod: ['get', 'post'],
|
| 73 |
returnType: [String, OutputServerEventStream],
|
|
|
|
| 65 |
})
|
| 66 |
@CloudHTTPv2({
|
| 67 |
runtime: {
|
| 68 |
+
memory: '8GiB',
|
| 69 |
timeoutSeconds: 540,
|
| 70 |
+
concurrency: 16,
|
| 71 |
},
|
| 72 |
httpMethod: ['get', 'post'],
|
| 73 |
returnType: [String, OutputServerEventStream],
|
backend/functions/src/services/puppeteer.ts
CHANGED
|
@@ -49,11 +49,12 @@ export class PuppeteerControl extends AsyncService {
|
|
| 49 |
return page.browser().connected && !page.isClosed();
|
| 50 |
}
|
| 51 |
}, {
|
| 52 |
-
max: Math.max(1 + Math.floor(os.freemem() / 1024 * 1024 * 1024),
|
| 53 |
min: 1,
|
| 54 |
acquireTimeoutMillis: 60_000,
|
| 55 |
testOnBorrow: true,
|
| 56 |
testOnReturn: true,
|
|
|
|
| 57 |
});
|
| 58 |
|
| 59 |
constructor(protected globalLogger: Logger) {
|
|
@@ -63,6 +64,8 @@ export class PuppeteerControl extends AsyncService {
|
|
| 63 |
override async init() {
|
| 64 |
await this.dependencyReady();
|
| 65 |
|
|
|
|
|
|
|
| 66 |
if (this.browser) {
|
| 67 |
if (this.browser.connected) {
|
| 68 |
await this.browser.close();
|
|
@@ -72,7 +75,13 @@ export class PuppeteerControl extends AsyncService {
|
|
| 72 |
}
|
| 73 |
this.browser = await puppeteer.launch({
|
| 74 |
headless: true,
|
| 75 |
-
timeout:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
});
|
| 77 |
this.browser.once('disconnected', () => {
|
| 78 |
this.logger.warn(`Browser disconnected`);
|
|
@@ -90,7 +99,7 @@ export class PuppeteerControl extends AsyncService {
|
|
| 90 |
const page = await dedicatedContext.newPage();
|
| 91 |
const preparations = [];
|
| 92 |
|
| 93 |
-
preparations.push(page.setUserAgent(`Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)`));
|
| 94 |
preparations.push(page.setBypassCSP(true));
|
| 95 |
preparations.push(page.setViewport({ width: 1920, height: 1080 }));
|
| 96 |
preparations.push(page.exposeFunction('reportSnapshot', (snapshot: any) => {
|
|
|
|
| 49 |
return page.browser().connected && !page.isClosed();
|
| 50 |
}
|
| 51 |
}, {
|
| 52 |
+
max: Math.max(1 + Math.floor(os.freemem() / 1024 * 1024 * 1024), 16),
|
| 53 |
min: 1,
|
| 54 |
acquireTimeoutMillis: 60_000,
|
| 55 |
testOnBorrow: true,
|
| 56 |
testOnReturn: true,
|
| 57 |
+
autostart: false,
|
| 58 |
});
|
| 59 |
|
| 60 |
constructor(protected globalLogger: Logger) {
|
|
|
|
| 64 |
override async init() {
|
| 65 |
await this.dependencyReady();
|
| 66 |
|
| 67 |
+
this.pagePool.start();
|
| 68 |
+
|
| 69 |
if (this.browser) {
|
| 70 |
if (this.browser.connected) {
|
| 71 |
await this.browser.close();
|
|
|
|
| 75 |
}
|
| 76 |
this.browser = await puppeteer.launch({
|
| 77 |
headless: true,
|
| 78 |
+
timeout: 10_000
|
| 79 |
+
}).catch((err) => {
|
| 80 |
+
this.logger.error(`Unknown firebase issue, just die fast, quitting process.`, { err });
|
| 81 |
+
process.nextTick(()=> {
|
| 82 |
+
process.exit(1);
|
| 83 |
+
});
|
| 84 |
+
return Promise.reject(err);
|
| 85 |
});
|
| 86 |
this.browser.once('disconnected', () => {
|
| 87 |
this.logger.warn(`Browser disconnected`);
|
|
|
|
| 99 |
const page = await dedicatedContext.newPage();
|
| 100 |
const preparations = [];
|
| 101 |
|
| 102 |
+
// preparations.push(page.setUserAgent(`Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)`));
|
| 103 |
preparations.push(page.setBypassCSP(true));
|
| 104 |
preparations.push(page.setViewport({ width: 1920, height: 1080 }));
|
| 105 |
preparations.push(page.exposeFunction('reportSnapshot', (snapshot: any) => {
|