Я новичок в программировании на python и сервере и пытаюсь записать двустороннюю связь между сервером и несколькими клиентами.
Я использую Pyhton JSON, библиотеку запросов и baseHTTPServer
Пока это мой код: Клиент:
import requests
import json
if __name__ == '__main__':
x = SomeClass()
payload = x.toJson()
print(j)
headers = {
'Content-Type': 'application/json',
}
params = {
'access_token': "params",
}
url = 'http://127.0.0.1:8000'
response = requests.post(url, headers=headers, params=params,
data=payload)
Сервер:
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
# First, send a 200 OK response.
self.send_response(200)
# Then send headers.
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()
length = int(self.headers.get('Content-length', 0))
data = json.loads(self.rfile.read(length).decode())
if __name__ == '__main__':
server_address = ('', 8000) # Serve on all addresses, port 8000.
httpd = HTTPServer(server_address, HelloHandler)
httpd.serve_forever()
У меня есть 2 вопроса:
Данные, которые я получаю на сервере, в порядке, но как мне отправить данные обратно клиенту?Я полагаю, что я могу сделать из клиента что-то вроде занятое ожидание каждые несколько секунд и отправлять POST снова и снова, но это неправильно, после того, как сервер запущен с do_POST без ожидания занятого.
Если у меня есть 10 000 клиентов, подключенных к серверу, как я могу отправить данные определенному клиенту?Я предполагаю, что если соединение было установлено, то сокет открывается где-то