@MixLtv

Почему Socket/ZeroMQ вызывают segmentation fault в python?

Здравствуйте.
Цель работы: передача данных из php скрипта в python

Для решения этой задачи я решил использовать socket ( модуль “socket” для python и socket_create для php).

Потом я столкнулся с проблемой, что после 2-3 часов скрипт выдаёт фатальную ошибку “segmentation fault”. Повторюсь, выдаёт не сразу после запуска, а через несколько часов исправной работы.
Код и скриншот ошибки ниже:
602db0c8da9ab679980652.jpeg

def Socket_Server_start():
	socket_finder = socket.socket()
	socket_finder.bind(('', 10999))
	socket_finder.listen(1000)
	while True:
		connect, addr = socket_finder.accept() #Принимаем входящие соединение
		threading.Thread(target=NewConnect, args=(connect, addr,)).start() #Создаём новый поток для работы с сокетом
		del connect, addr
Socket_Server_start() #Запускаем сокет-сервер


После неуспеха с socket я решил использовать ZerpMQ
Ситуация осталась точно такой же (после нескольких часов работы скрипт вылетал).
Код и скриншот ошибки ниже:
602db1239a799448774527.jpeg

def Socket_Server_start():
	global client, messages
	context = zmq.Context()
	client = context.socket(zmq.ROUTER) #Создаём сервер
	client.bind("tcp://*:5556")
	poll = zmq.Poller()
	poll.register(client, zmq.POLLIN) #Слушаем клиентов
	while True:
		sockets = dict(poll.poll(1000))
		if sockets:
			identity = client.recv().decode() #ID клиента
			msg = client.recv().decode().split("|") #Сообщение от клиента
			#Неважные строчки кода
			if identity not in messages: #Если пользователь с данным ID не подключался
				messages[identity] = [] #Добавляем ID клиента в переменную
				threading.Thread(target=NewConnect, args=(ZeroMQ(identity),)).start() #Запускаем поток для работы с сокетом
			else:
				messages[identity].append(msg) #Клиент уже есть в в переменной -> добавляем сообщение
Socket_Server_start()
  • Вопрос задан
  • 267 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы