2009-11-03 6 views
0

Я пытаюсь написать библиотеку Python, которая будет реализовывать клиентскую часть определенного протокола чата.python chat client lib

После того как я подключиться к серверу,
я начала основной цикл, где я прочитал с сервера и обрабатывать полученные команды и здесь мне нужно вызвать функцию обратного вызова (например, on_message или on file_received, и т.д.).

Как мне это осуществить?
Должен ли начинаться новый поток для каждой функции обратного вызова? Как может быть, некоторые обратные вызовы потребуют некоторого времени для возврата, и я буду тайм-аут.
Также,
Если основной цикл, где я читаю с сервера, в потоке, могу ли я записать в сокет из другого потока (отправлять сообщения на сервер)?
Или есть лучший подход? Спасибо.

ответ

2

Я бы использовал модуль выбора или чередуюся, однако выбор немного более портативный, и, на мой взгляд, несколько более питонический.

6

Для этого приложения python я бы не использовал потоки. Я бы использовал фреймворк вроде Twisted.

Документы имеют примеры; here's a chat example.

1

Темы просто лишнее осложнение здесь и приведут к неясным ошибкам, если вы не знакомы с тем, как правильно их использовать. Однако asyncore или asynchat являются простыми маршрутами к одной и той же цели.