error: (10035, 'The socket operation...

bockman at virgilio.it bockman at virgilio.it
Mon Apr 28 03:37:35 EDT 2008


On 28 Apr, 01:01, Don Hanlen <dhan... at owt.com> wrote:
> IDLE internal error in runcode()
> Traceback (most recent call last):
>   File "C:\PYTHON25\lib\idlelib\rpc.py", line 235, in asyncqueue
>     self.putmessage((seq, request))
>   File "C:\PYTHON25\lib\idlelib\rpc.py", line 332, in putmessage
>     n = self.sock.send(s[:BUFSIZE])
> error: (10035, 'The socket operation could not complete without
> blocking')
>
> Does this look familiar to anyone?  I can't figure out what to do
> about it.  Python 2.5, windoze.  I get it when I execute a Tkinter op
> that works elsewhere.
>
> changing this:
>
> t = self.b.create_text(
>     (point.baseX + 1)*self.checkerSize/2 + fudge,
>     y + fudge,
>     text = str(point.occupied),
>     width = self.checkerSize)
>
> to
>
> t = self.b.create_text(
>     (point.baseX + 1)*self.checkerSize/2 + fudge,
>     y + fudge,
>     text = str(point.occupied),
>     font=("Times", str(self.checkerSize/2), "bold"),
>     width = self.checkerSize)
>
> for example.  The same code works fine elsewhere.  I thought I'd ask
> here before I try (no clue) increasing BUFSIZE in rpc.py?  I'm not
> crazy about tinkering with code I have no clue about..
> --
> don

The error is EWOULDBLOCK, which you get when you configure a socket
for asynchronous
I/O and then try an operation which cannot be completed immediately.
It is not an actual failure,
it is part of the asynch socket handling issues: it means that you
have to wait and try later.

AFAIK (almost nothing) the Tkinter application has two processes
(maybe the front-end and the interpreter)
which communicate through a socket. From the traceback, I world say
that the two processes communicate
using RPC protocol and the rpclib module, and that this in turns uses
the asyncqueue module, and one of them fails handling the EWOULDBLOCK
code.

I don't think that increasing BUFSIZE would solve the problem, since
you will try to send more bytes in a single
operation, and this would probably still result in an EWOULDBLOCK
return code.
Anyway, it looks like an IDLE problem, so if you can use another IDE
( Pythonwin? ), you could just ignore it,
maybe submit a bug report ?

Ciao
-----
FB



More information about the Python-list mailing list