nomagick commited on
Commit
5ed3f90
·
unverified ·
1 Parent(s): be7eeec
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, '.cache', 'puppeteer'),
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: '4GiB',
69
  timeoutSeconds: 540,
70
- concurrency: 4,
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), 4),
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: 45_000
 
 
 
 
 
 
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) => {