Запуск скрипта Python с перезапуском Forever (модуль Node.JS) каждую секунду

Я начинаю свой навсегда с «навсегда запустить app.py», а затем проверяю «список навсегда», и приложение ОСТАНОВЛЕНО и не перезапускается. Когда я запускаю его «навсегда начать --minUptime 1000 --spinSleepTime 1000 app.py», он перезапускает его снова и снова каждые 0,8 секунды или меньше. Если я запускаю свое приложение за пределами навсегда, оно работает отлично. Я перезагрузил свой компьютер, и происходит то же самое. Есть идеи, в чем может быть проблема?

Я удалил навсегда и даже Node.JS и переустановил, и когда я попытался снова начать навсегда, я столкнулся с этой ошибкой:

SyntaxError: Unexpected token import
at new Script (vm.js:51:7)
at createScript (vm.js:136:10)
at Object.runInThisContext (vm.js:197:10)
at Module._compile (internal/modules/cjs/loader.js:618:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)
error: Forever detected script exited with code: 1

ОБНОВИТЬ

Когда я навсегда останавливаю 0 остановленный процесс, даже если он его удаляет, он выдает ошибку, которая гласит:

 error:   Forever cannot find process with id: 0

После этого, когда я проверяю журнал навсегда, я получаю:

error:   Cannot start forever
error:   script C:\Users\Aaron Mazie\log does not exist.

Я на Windows 10 и использую последние версии. (Node.js 9.11.1 и NPM 5.6.0). Любая помощь будет очень признательна.


person Aaron Mazie    schedule 15.04.2018    source источник
comment
Вы пробовали переустановить пакет? Обычно это что-то исправляет.   -  person Ivan    schedule 15.04.2018
comment
выполнить: forever logs 0 и увидеть ошибки, вызывающие проблему.   -  person num8er    schedule 15.04.2018
comment
Попробуйте так: forever start -c "node -r babel-register" app.js   -  person num8er    schedule 16.04.2018
comment
Я попробовал, и все равно пишет, что приложение остановлено.   -  person Aaron Mazie    schedule 16.04.2018
comment
добавьте файл app.js к вашему вопросу   -  person num8er    schedule 16.04.2018
comment
Согласно первому предложению вашего вопроса, вы пытаетесь запустить app.py, а не app.js - может быть проблема в этом? Если нет, навсегда может быть запущена неправильная версия node.js(неправильный nvm?) в соответствии с заголовком stackoverflow.com/questions/37634198/   -  person Gyuri    schedule 16.04.2018
comment
@Gyuri Раньше это работало.   -  person Aaron Mazie    schedule 17.04.2018
comment
@Gyuri на удивление, Аарон прав. Модуль Nodejs forever может выполнять любой код, если вы используете -c "interpreter code-file.ext". Но забавно видеть, как мир без nodejs проделывает этот трюк )))   -  person num8er    schedule 17.04.2018
comment
@num8er оказывается, что я тоже был прав: скрипт Python пытался запустить как javascript — отсюда и ошибка Unexpected token import. ;)   -  person Gyuri    schedule 11.05.2018
comment
@Гюри конечно. Если вы не передаете пользовательскую команду, она вызывает nodejs и да, она анализирует ее как код JS.   -  person num8er    schedule 11.05.2018


Ответы (1)


Устраните проблему, проверив журналы.

Выполнить в терминале:

1) forever list и найдите Ваше приложение запущено

$ forever list
info:    Forever processes running
data:        uid      command             script    forever pid   id logfile                         uptime        
data:    [0] UID-HERE /usr/local/bin/node app.js 63123   56557    /home/api/.forever/UID-HERE.log STOPPED

2) forever logs 0 (0 для [0] порядкового номера в списке)
или
forever logs 0 -f (для непрерывного чтения)

3) Прочтите журналы и исправьте свою проблему

Я могу предположить, что это может быть EADDRINUSE из-за конфликта портов, когда вы запускаете много приложений, используя один и тот же порт, поэтому, если да:

убедитесь, что в листинге нет такого же app.js (forever list)

or

выполнить: ps -ax | grep node и увидеть приложения nodejs, возможно, запущенные, возможно, другими пользователями в системе

ОБНОВИТЬ:

Поскольку вы запускаете скрипт python с использованием модуля nodejs (forever), попробуйте запустить его следующим образом:

forever start -c "python app.py"
person num8er    schedule 15.04.2018
comment
Я проверил, и использование порта не было проблемой. Я отредактировал свой пост и добавил сообщение об ошибке выше - person Aaron Mazie; 16.04.2018
comment
@AaronMazie похоже, что вы используете Babel в локальной разработке, поэтому, чтобы запустить его, используя навсегда, перенесите свой код в пригодный для использования код узла и запустите его навсегда. Или выполните поиск: run node babel with forever в Google - person num8er; 16.04.2018
comment
Приложение, которое я запускаю, на самом деле написано на Python, с которым я знаком. Кроме того, Babel поставляется с Node.JS, потому что я не загружал его отдельно? - person Aaron Mazie; 16.04.2018
comment
@AaronMazie Вы установили теги в своем вопросе: node.js и forever, и вы написали, что ошибка говорит Unexpected token import, что означает, что в какой-то части вашего кода используется такая строка: import SomePackage from 'some-library', которая изначально не поддерживается nodejs и преобразуется с помощью транспиляторов (babel) . Но теперь Вы говорите, что используете Python? Как так? Whaaat (: Можете ли вы поделиться app.js файлом в своем вопросе? - person num8er; 16.04.2018
comment
Я использую навсегда для постоянного запуска скрипта Python. Иногда он падает из-за ошибок задержки от API, который я вызываю, поэтому я использую навсегда, чтобы поддерживать его. Могут ли ошибки транспилятора быть из моего компилятора Visual Studio, GCC/G++? Я обновил его. Я использую и Cython, и Python. Я пробовал оба типа сценариев навсегда, и это то же самое - person Aaron Mazie; 16.04.2018
comment
@AaronMazie добавил пример запуска скрипта Python через навсегда, посмотрите в конце моего ответа. - person num8er; 17.04.2018
comment
ТЫ ЖЖЕШЬ! Оно работает. Большое спасибо за то, что продолжаете пытаться мне помочь. ТАК ценится. И я прошу прощения за то, что предположил, что app.js и app.py — это одно и то же. Раньше работало по-другому, не знаю, что изменилось. В любом случае, еще раз большое спасибо - person Aaron Mazie; 17.04.2018
comment
@AaronMazie не нужно извиняться) это случается с кем угодно. рад, что это сработало. - person num8er; 17.04.2018