Суть: есть расширение для хрома, которое использует много разного api через javascript, но я плохо знаю этот язык и не могу грамотно работать с ним, поэтому хочу опустить всю работу ниже, в идеале вынести в python.
Я понимаю, что лучшее решение моей задачи это python-сервер на сокетах или, возможно, сервер на flask. Я могу поместить микро-сервер в файлы проекта, это бы не заняло много места, но я не знаю как после этого его запускать.
Есть ли какой-то простой способ запустить python-скрипт в фоне из js?
Пиши javascript на python. То есть пишешь свой код на python, а потом транслируешь в javascript. Но ты должен понимать, что нельзя будет использовать все доступные средства, так как код будет исполняться в браузере, и ты будешь ограничен возможностями js в браузере.
Но серьезно, вся эта морока не стоит того, чтоб с ней возиться. Тебе все равно придется втыкать как работает та или иная вещь на js, а потом воспроизводить ее на python. Серьезно, потрать денек на javascript.
PS:
1. я знаю разницу между Java и JS :) Картинка использована как собирательный образ "выучить быстро"
2. Я понимаю, что специалисту со знанием пары-тройки языков с разными парадигмами (ооп, фп, процедурный), не составит труда освоить нюансы "нового" языка за пару выходных
Проблема трансляции кода заключается в том, что на Python я использовал библиотеку googleapi, которой я не могу воспользоваться на js. Транслятор, которым я пытался воспользоваться (Rapydscript) сгенерировал невалидный код.
Я знаю некоторые особенности javascript, но данное приложение подразумевает тонкое знание языка, поэтому стараюсь найти решение, которое удовлетворило бы не только клиентов приложения, но и меня как разработчика.
Где должно всё это использоваться? Вы это будете запускать у себя? Это будет работать где-то в одной конторе? Или это будет распространяться кому попало, как MS-Office и прочие программы (платные или бесплатные)?
Как правило, в таких случаях пользователю (или, если это в организации - то сисадмину) предлагают стартовать серверный процесс так, как ему удобно. Или при инсталляции - исталлятор прописывает запуск сервера в автостарт.
Распространяться приложение будет свободно. Автостарт - интересное решение, особенно для браузерного расширения, но тогда проблема будет заключаться в исключении копий этих мини-серверов для разных браузеров. Обязательно попробую, возможно получится написать свой инсталятор, с проверками активности внутреннего сервера, большое спасибо!
Данил, Есть масса программ, которые запускаются только один раз, а при повторном запуске вторая копия видит первую и не запускается. В Вашем случае - запуск первой копии виден по факту того, что первая копия забиндила TCP-порт, и вторая копия просто не сможет его забиндить (открыть в пассивном режиме).
Developer, Я написал "исталлятор прописывает запуск сервера в автостарт". Т.е. предполагается одноразовый запуск полноценной программы (не плагина), которая пропишет плагин в браузер и поместит вызов сервера в автостарт. Как-то так.
JS в браузере - это клиент. И клиент никак не может напрямую запустить серверный код (если код не дырявый), пусть даже и на python.
Делай API, при обращении к которому через JS, будет запускаться питоновский код
Это я и хочу сделать! Главный вопрос: как каждый пользователь будет разворачивать у себя этот сервер? Мне необходимо, чтобы клиент лежал рядом с сервером и при необходимости делал к нему обращения (запрос файлов, uri, логи). Большое спасибо за ответ!
Данил, термины для того и существуют, чтобы не было путаницы и не возникало недопонимания. Давай общаться на одном языке.
Сервер - это сервер. Клиент - это клиент.
Расширения пишутся javascript, увы.
Если очень надо, разверните локальный веб-сервер хоть на чем, и гоняйте через XmlHttpRequest запросы к нему из Javascript-а, однако Вам все равно нужно будет в расширении обрабатывать итоги запроса. Опять же само по себе такое расширение уже жить не будет.