Правильный способ общения с запущенным python из javascript [закрыт]

Моя цель:

  1. Управляемый python продолжает изменять значение переменной.
  2. В режиме реального времени отображается изменение значения в браузере с использованием html и javascript, пока python меняет значение.

Следующее - это решение для googled:

  1. Запишите код python с помощью Flask
  2. Запрос на запуск python через Ajax из javascript
  3. Питон отвечает на переменную как JSON на javascript

Основываясь на этом решении, у меня есть следующие вопросы и вы можете исправить меня, если возникли недоразумения.

  1. Сначала питон должен выполняться вручную, а затем javascript может отправить запрос ajax на http://localhost:5000/[...some @app.route()] . Мне нужно, чтобы запуск python выполнялся бесконечно (while loop) после первого запроса ajax.

  2. Пиктограмма Flask не может иметь цикл while . Не уверен механизм app.run() в Flask.

  3. Как только первая точка достигнута, javascript также должен обновлять html, как только python меняет эту переменную. Теперь кажется, что я должен продолжать отправлять запрос ajax, чтобы получить переменную из python.

Очень ценю любую информацию для решения моих вопросов!

Всего 2 ответа


В принципе, вам нужны три части

  • ваш цикл питона A
  • веб-приложение B
  • и приложение javascript C

Вы можете комбинировать A + B в один процесс, и в этом случае вам придется запускать цикл в отдельном потоке, или вы можете использовать любые доступные средства IPC, такие как разделяемая память / каналы / сокеты, для связи между A и B. Простым решением будет использование сервера базы данных, на который пишет A, и из которого B читает.

Если A и B являются отдельными, тогда B не обязательно должен быть python, вы можете написать его в js или php или во всем остальном.

Чтобы избежать опроса на стороне клиента, вы можете использовать WebSockets для связи между B и C.


Вам нужно будет запустить цикл while в другом потоке или процессе, например, используя колбо-сельдерей

обновление javascript может быть выполнено с помощью setTimeout


Есть идеи?

10000