Обработка событий сокета клиента Python, подобная той, что есть в Adobe ActionScript
Я портирую некоторый код ActionScript на Python и борюсь с какой-то реализацией диспетчера событий, похожей на ту, что доступна во Flash (flash.events.EventDispatcher).
Мне нужно создать подключение сокета клиента к серверу, который будет отвечать баннером. Затем клиент отправит некоторую информацию, получит новый баннер и т. Д.
Я знаю, как создать клиентский сокет, но проблема в том, как обрабатывать события, чтобы клиент запускал соответствующие функции в зависимости от событий.
Я немного читал о различных модулях, таких как Asyncore и Twisted, и, честно говоря, я ищу что-то, что можно быстро и легко реализовать. Мне нужно, чтобы код был перенесен с минимальными усилиями в качестве доказательства концепции.
Вот часть моего кода с использованием asyncore:
import socket
import asyncore
class Client(asyncore.dispatcher):
def __init__(self, host, port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect((host, port))
def handle_connect(self):
self.log('Socket connected')
def handle_close(self):
print "Socket disconnected"
self.close()
def handle_read(self):
print 'Received: ', self.recv(1024)
self.handle_close()
def connect(host, port)
clientSocket = Client(host, port)
asyncore.loop()
По какой-то причине код возвращает следующую ошибку:
warning: unhandled write event
warning: unhandled write event
warning: unhandled write event
...
Приведенный выше код на самом деле не делает ничего полезного. Мне нужно добавить обработчики событий для ошибок ввода-вывода и для обработки данных, отправляемых туда и обратно. Однако сначала мне нужно разобраться с основами.
Любая помощь с благодарностью. Благодарю.
1 ответ
Вы пытались переопределить handle_write
событие, как описано в документации asyncore?
Изменить: В качестве альтернативы, вы можете использовать -W
опция командной строки или модуль предупреждений, если вы хотите подавить предупреждение, а не переопределить событие.