This looks like the kind of thing that could involve using Deferred as part of 
solution. Instead of callLater(0.8,doWrite), design the mechanism to wire up 
event-source to fire the deferred and make doWrite be the callback.
 
On Oct 20, 2012, at 8:29:10AM, gelin yan wrote:

> Hi All
> 
>   A few months ago, I reported a bug about IOCP. Last night I spent several 
> hours on its implementation and finally found out a possible solution for 
> that.
> 
>   when sending some small chunks data continuously, the buffer will pile them 
> up and send to IOCP; however there is a SEND_LIMIT (128K) that means only 
> 128K will be handled. Now the problem is when we try to trigger the next 
> writing, IOCP will raise ERROR_IO_PENDING immediately and then connection 
> Lost.
> 
>   So I got a idea: if the size of data is larger than SEND_LIMIT, we can wait 
> a little bit time for the next writing instead of do it immediately. 
> 
> in twisted\internet\iocpreactor\abstract.py there is a method
> 
> def _cbWrite(self, rc, bytes, evt):
>         if self._handleWrite(rc, bytes, evt):
>             self.doWrite()
> 
> now I modified a bit,
> 
> def _cbWrite(self, rc, bytes, evt):
>         if self._handleWrite(rc, bytes, evt):
>             if len(evt.buff) < self.SEND_LIMIT:
>                 self.doWrite()
>             else:
>                 self.reactor.callLater(0.8,self.doWrite)
> 
> 
> 
> 0.8 is a silly trial but I have no idea what is the right number for this 
> place. After this modification, previous problematic scripts can pass.
> 
> Maybe the better solution is to find a way to poll the complete port status 
> when read/write will be recovered from IO PENDING. Simply wait a little is 
> risky.
> 
> Regards
> 
> gelin yan
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python@twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to