Служба сокетов Python TCP% 100 загрузка ЦП - PullRequest
0 голосов
/ 20 февраля 2019

Привет, я работаю над портом прослушивания TCP Socket с python и вставляю данные в postgresql.Операционная система Ubunutu Server 16.04.3 LTS.Когда все клиенты подключаются первыми, ЦП не загружен.И когда клиент отключается от сокета, я вижу, что сокет все еще подключен, а клиент снова подключен, другой сокет. Вставка работает хорошо. Я буду слушать 2000 клиентов.1-Как сокет может остановиться при отключении клиента?2-Почему процессор загружен на 100?

PY:

import socket
import threading
import psycopg2
import string
import datetime
import resource

resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536))
bind_ip = '0.0.0.0'
bind_port = 1339

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip, bind_port))
server.listen(5000)  # max backlog of connections

connection = psycopg2.connect(user = "USER",password = "PASS",host = "127.0.0.1",port = "5432",database = "DB")
cursor = connection.cursor()

print 'Listening on {}:{}'.format(bind_ip, bind_port)


def handle_client_connection(client_socket,address):
    while 1:
        request = client_socket.recv(1024)
        request_arr = string.split(request, ",")
        # print 'Received {}'.format(request)
        now = datetime.datetime.now()
        if request_arr[0] == '*HQ':
            try:
                nowdate=now.strftime("%Y-%m-%d")
                nowtime=now.strftime("%H:%M:%S")
                record_datetime=now.strftime("%Y-%m-%d %H:%M:%S")
                postgres_insert_query = """ INSERT INTO public.listener (id) VALUES (%s)"""
                record_to_insert = (request_arr[1])
                cursor.execute(postgres_insert_query, record_to_insert)
                connection.commit()
            except Exception:
                pass
while True:
    client_sock, address = server.accept()
    print 'Accepted connection from {}:{}'.format(address[0], address[1])
    client_handler = threading.Thread(
        target=handle_client_connection,
        args=(client_sock,address[0],)  
    )
    client_handler.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...