[IronPython] IronPython and CPython httplib and ssl modules produce IOError
zgramana at pottsconsultinggroup.com
Fri Jun 10 19:58:14 CEST 2011
I can't say for certain that issue you are experiencing is caused by the
bug I'm working on, but it looks very likely.
I'll let you know when I submit the patch back to the project.
On 6/10/2011 1:49 PM, Lukáš Duběda wrote:
> Thank you, Zack,
> unfortunately, editing the API I got isn't an option, so the
> only workaround I found was to catch the exception and completely
> ignore it, which is terrible, but at least it works.
> So you're saying that this is actually a "bug" in IronPython
> that's being worked at?
> Thanks again, much appretiated!
> Lukáš Duběda
> [T] +420 602 444 164
> duber studio(tm)
> [M] info at duber.cz
> [W] http://www.duber.cz
> [A] R.A.Dvorského 601, Praha 10
> [A] 10900, Czech Republic, Europe
> On 10.6.2011 16:32, Zachary Gramana wrote:
>> I'm working on this issue, or at least an issue that generates the same
>> exception. I do have a working patch, which I hope to contribute back
>> after a little more work on it.
>> Check your API to see if you are making any calls to socket.makefile().
>> If you do, and subsequently close the fileobject (but not the socket
>> object), the underlying .NET Socket will also get closed (and garbage
>> collected), even though other objects are still referencing it. However,
>> the Python socket will not be aware of this corrupt state, and
>> subsequent socket operations will raise the exception.
>> Not sure why subsequent attempts work for you, other than that perhaps
>> your API has error handling code that re-create the connection.
>> Hope this might be helpful.
>> Best Regards, Zack
>> On 6/10/2011 7:55 AM, Lukáš Duběda wrote:
>>> Hi there,
>>> I hope someone out there could help me out with this problem.
>>> I have a API written in Python (CPython that is) that relies on
>>> some of the CPython modules, such as ssl and httplib.
>>> The problem is, when I call the API and its methods via IronPython
>>> I get IOError: "System.IO.IOException: Unable to write data to the
>>> transport connection: Cannot access a disposed object."
>>> The weirdest thing is, if I make the call for the second time,
>>> all goes through beautifully. Then again, thrid time errors out, but
>>> fourth goes through just fine. And so on so forth.
>>> Here's the exact script excerpt (with the thorough error output) at
>>> pastebin: http://pastebin.com/TKbKDtPb
>>> I call the sg.find_one() method the first time, which produces the
>>> IOError. Then at the end of the error output, I call it again and
>>> as you can see, it returns the correct object.
>>> Please, could anyone tell me how to deal with this without rewriting
>>> the given API to use .NET objects?
>>> Thanks a lot in advance, cheers,
>> Users mailing list
>> Users at lists.ironpython.com
> Users mailing list
> Users at lists.ironpython.com
More information about the Ironpython-users