Скрипт кукловода работает локально, но не на EC2 AWS - PullRequest
0 голосов
/ 17 мая 2019

Я запускаю следующий скрипт на EC2 AWS с Amazon Linux AMI

const puppeteer = require('puppeteer');

url_ =  'https://www.barchart.com/futures/quotes/ES*0/interactive-chart/fullscreen';

func()

async function func() {
    console.log(0)
    const browser = await puppeteer.launch();
    console.log(1)
    const page = await browser.newPage();
    console.log(2)
    await page.goto(url_);
    console.log(page)

    return page
}

с сегодняшнего дня, без изменений или новых установок на EC2, скрипт перестал работать, пока он работал до вчерашнего дня.

Тот же сценарий на локальной машине все еще работает.

Вместо этого на EC2 выдает следующую ошибку:

(узел: 12636) UnhandledPromiseRejectionWarning: Ошибка: навигация не удалась, потому что браузер отключился! на CDPSession.LifecycleWatcher._eventListeners.helper.addEventListener (/home/ec2-user/hd/node_modules/puppeteer/lib/LifecycleWatcher.js:47:107) на CDPSession.emit (events.js: 189: 13) на CDPSession._onClosed (/home/ec2-user/hd/node_modules/puppeteer/lib/Connection.js:215:10) в Connection._onClose (/home/ec2-user/hd/node_modules/puppeteer/lib/Connection.js:138:15) на WebSocketTransport._ws.addEventListener.event (/home/ec2-user/hd/node_modules/puppeteer/lib/WebSocketTransport.js:45:22) на WebSocket.onClose (/home/ec2-user/hd/node_modules/ws/lib/event-target.js:124:16) на WebSocket.emit (events.js: 189: 13) на WebSocket.emitClose (/home/ec2-user/hd/node_modules/ws/lib/websocket.js:191:10) в Socket.socketOnClose (/home/ec2-user/hd/node_modules/ws/lib/websocket.js:850:15) на Socket.emit (events.js: 189: 13) - ASYNC - в кадре. (/Home/ec2-user/hd/node_modules/puppeteer/lib/helper.js:110:27) в Page.goto (/home/ec2-user/hd/node_modules/puppeteer/lib/Page.js:656:49) на странице. (/Home/ec2-user/hd/node_modules/puppeteer/lib/helper.js:111:23) в func (/home/ec2-user/hd/scrape_bk.js:19:13) at process._tickCallback (internal / process / next_tick.js: 68: 7) (узел: 12636) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции не был выполнен блок catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 12636) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.

если я вместо этого дам этот URL (http://www.google.com), я получаю эту ошибку на EC2 (пока она все еще работает на локальной машине):

(узел: 12938) UnhandledPromiseRejectionWarning: Ошибка: страница разбилась! в Page._onTargetCrashed (/home/ec2-user/hd/node_modules/puppeteer/lib/Page.js:185:24) на CDPSession.Page.client.on.event (/home/ec2-user/hd/node_modules/puppeteer/lib/Page.js:140:56) на CDPSession.emit (events.js: 189: 13) на CDPSession._onMessage (/home/ec2-user/hd/node_modules/puppeteer/lib/Connection.js:200:12) в Connection._onMessage (/home/ec2-user/hd/node_modules/puppeteer/lib/Connection.js:112:17) на WebSocketTransport._ws.addEventListener.event (/home/ec2-user/hd/node_modules/puppeteer/lib/WebSocketTransport.js:41:24) на WebSocket.onMessage (/home/ec2-user/hd/node_modules/ws/lib/event-target.js:120:16) на WebSocket.emit (events.js: 189: 13) в Receiver.receiverOnMessage (/home/ec2-user/hd/node_modules/ws/lib/websocket.js:789:20) на Receiver.emit (events.js: 189: 13) (узел: 12938) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции не был выполнен блок catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 12938) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом завершения. (узел: 12938) UnhandledPromiseRejectionWarning: Ошибка: навигация не удалась, потому что браузер отключился! на CDPSession.LifecycleWatcher._eventListeners.helper.addEventListener (/home/ec2-user/hd/node_modules/puppeteer/lib/LifecycleWatcher.js:47:107)в CDPSession.emit (events.js: 189: 13) в CDPSession._onClosed (/home/ec2-user/hd/node_modules/puppeteer/lib/Connection.js:215:10) в Connection._onClose (/ home / ec2-user / hd / node_modules / puppeteer / lib / Connection.js: 138: 15) в WebSocketTransport._ws.addEventListener.event (/home/ec2-user/hd/node_modules/puppeteer/lib/WebSocketTransport.js:45:22) в WebSocket.onClose (/home/ec2-user/hd/node_modules/ws/lib/event-target.js:124:16) в WebSocket.emit (events.js: 189: 13) в WebSocket.emitClose (/home / ec2-user / hd / node_modules / ws / lib / websocket.js: 191: 10) в Socket.socketOnClose (/home/ec2-user/hd/node_modules/ws/lib/websocket.js:850:15)в Socket.emit (events.js: 189: 13) - ASYNC - в Frame.(/home/ec2-user/hd/node_modules/puppeteer/lib/helper.js:110:27) в Page.goto (/home/ec2-user/hd/node_modules/puppeteer/lib/Page.js:656:49) на с.(/home/ec2-user/hd/node_modules/puppeteer/lib/helper.js:111:23) в func (/home/ec2-user/hd/scrape_bk.js:13:13) в process._tickCallback (внутренний/process/next_tick.js:68:7) (узел: 12938) UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(id отклонения: 2)

Я не знаю, как определить источник проблемы, поскольку она возникла внезапно, без изменений в машине или коде, и на моей локальной машине она работает нормально.

1 Ответ

1 голос
/ 17 мая 2019

Кажется, кукловод может запустить браузер, но затем он случайно падает. Это не должно происходить на обычной машине и может происходить из-за нехватки ресурсов.

Вы должны проверить, правильно ли работает ваша система. В частности, вы можете проверить:

  • Использование памяти
  • загрузка процессора
  • Использование диска

Слишком мало памяти или недостаточная мощность процессора могут привести к случайным сбоям, а также нехватке места на жестком диске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...