Создание серверного приложения с использованием Fast API, React, Raspberry Pi на компьютере под управлением Windows.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Создание серверного приложения с использованием Fast API, React, Raspberry Pi на компьютере под управлением Windows.

Сообщение Anonymous »

Характеристики системы
  • Процессор — i5 13-го поколения
  • Оперативная память — 16 ГБ
  • SSD — Nvme 500 ГБ
  • ОС — Windows Home
  • Raspberry Pi — Pi4 8 ГБ
У меня есть приложение Fast API, размещенное на компьютере с Windows, а также приложение реагирования на том же компьютере. Приложение React использует приложение fastAPI для операций CRUD. Этот сервис используется для хранения данных о производственных линиях на производственном предприятии, ежедневно фиксирующих количество произведенной продукции на каждой линии в разные смены.
Подсчеты производства отправляются на сервер для каждой линии через Raspberry. Pi, который подключен к машине в линии, которая отправляет счетчик через API из приложения fastAPI. Теперь у Raspberry Pi также есть экран, который используется для отображения таких деталей, как баланс целевого количества производства и т. д.
Я написал сценарий на Raspberry Pi, который открывает окно pywebview и отображает страница реагирующего приложения на дисплее, ниже приведен сценарий.

Код: Выделить всё

import webview
import requests
import threading
import time

# Define the URL to load on success
success_url = 'http://172.17.17.110:3000/line/12'

# Define the path to the error HTML file
error_html_content = """





Connection Error

body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f8f8f8;
font-family: Arial, sans-serif;
}
.error-message {
font-size: 48px;
color: #ff0000;
text-align: center;
}



Connection Error


"""

# Define the health check API URL
health_check_url = 'http://172.17.17.110:8000/healthz'

# Time interval (in seconds) between health checks
check_interval = 5

request_timeout = 5

def load_error_html(window):
window.evaluate_js(f'document.documentElement.innerHTML = `{error_html_content}`')

def health_check(window):
first_success = False
while True:
print("FIRST SUCCESS", first_success)
try:
response = requests.get(health_check_url, timeout=request_timeout)
print("RESPONSE", response)
if response.status_code == 200:
if not first_success:
# Load the success URL in the webview window
window.load_url(success_url)
first_success = True
else:
if first_success:
# If the health check fails, load the error HTML
load_error_html(window)
first_success = False
except requests.RequestException:
print("REQUEST EXCEPTION")
if first_success:
load_error_html(window)
first_success = False
except requests.Timeout:
print("TIMEOUT EXCEPTION")
if first_success:
# If there is an exception, load the error HTML
load_error_html(window)
fisrt_success = False

# Wait for the specified interval before checking again
time.sleep(check_interval)
def create_window():
# Create an initial window with the error HTML
window = webview.create_window(title='IILMS',
html=error_html_content,
width=1920, height=1080, fullscreen=True,
resizable=False, text_select=False)

# Start the health check in a background thread
threading.Thread(target=health_check, args=(window,), daemon=True).start()

# Start the webview
webview.start()

if __name__ == '__main__':
create_window()

Этот сценарий запускается автоматически при запуске. В Raspberry Pi в фоновом режиме работает еще один скрипт, который прослушивает контакты GPIO для отправки данных в приложение fastAPI.
Приложения fastAPI и React запускаются при запуске с использованием uvicorn main:app — -host 0.0.0.0 --port 8000 и npm start --host 0.0.0.0 соответственно.
При запуске компьютера с Windows создаются два окна cmd. внутри которого выполняются вышеуказанные команды. Вся эта система, включая Raspberry Pi (16 штук) и серверная машина, соединены через локальное проводное соединение, при котором все Raspberry Pi подключаются с помощью коммутатора, а затем коммутатор подключается к маршрутизатору Wi-Fi, а сервер подключается к маршрутизатору. через кабель локальной сети.
Проблема
Проблема в том, что приведенный выше скрипт выдает ошибку соединения с HTML-страницей, если Raspberry Pi имеет больше одновременно активно более 7 подключений.
До проводного подключения Raspberry Pi подключались через Wi-Fi с использованием повторителей Wi-Fi (2,4 ГГц), подключенных к основному маршрутизатору Wi-Fi и проблема заключалась в том, что Raspberry Pi начал автоматически отключаться от ретрансляторов даже после установки автоматического соединения и не подключался после всех попыток, но другие устройства, такие как мобильные телефоны и ноутбуки, могли подключаться к репитерам.
Затем я решил использовать проводной подход, но теперь возникла описанная выше проблема. Я понятия не имею, что не так с общей настройкой, и подумал, что маршрутизатор Wi-Fi, возможно, не сможет обработать такое количество запросов, поэтому я напрямую подключил коммутатор к серверу, но все равно безуспешно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -a-windows
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»