tkinter, threads and asyncore together

Jp Calderone exarkun at intarweb.us
Wed Feb 11 14:24:51 EST 2004


On Wed, Feb 11, 2004 at 07:11:58PM +0000, george.trojan at noaa.gov wrote:
> My application consists of Tkinter GUI that has to communicate with a
> remote
> server. The communication is bi-directional: the GUI responds to remote
> requests and user actions uch as pressing a button) should send messages
> 
> to the server. I want to have the network interface implemented as a
> separate
> thread, as it may take a while to proccess incoming messages. My initial
> approach is the following
> 
>  ------   Queue   --------------------
> |      | <------ |      asyncore      |        socket
> | GUI  |    ?    |dispatcher_with_send| <------------------>  server
> |      | ------> |                    |
>  ------           --------------------
> 
> My question is how to communicate with asyncore (to send a message, or
> end the thread)? I started with creating an additional dispatcher class
> using unix domain socket, but is seems wrong, why use sockets within the
> same process? I might try file_dispatcher around a pipe, but maybe I
> should use different design altogether.

  You need something selectable to wake asyncore up from its call to
select().  The easiest way to do this is with a pipe.  You don't have to
send any actual message over the pipe, though; one byte will be enough to
get asyncore to call back into your code, then you can retrieve the message
from wherever it is (eg, in a Queue.Queue).

  Jp





More information about the Python-list mailing list