Telnetlib not reading all output? Try asynchat
Telnetlib not reading all output? Not receiving all the output from your
read_until() not an option because you don’t know what output to look for?
telnetlib not queueing your writes?
Think you want a
telnetlib alternative, but Google isn’t turning anything up?
I’ve been there.
There was head-banging, but it was not a ball
Image stolen from Metal Traveller
After a couple of days of madness I learned a few things:
– In Maya at least, not all output generated by the server is available to be read. I can call
print("foo") all day and never read back “foo” on the client. Apparently it is known that “python print does not appear in certain output”. I ended up using the mel warning command, and if you think that sounds like overkill you are probably right.
– After much much much Googling, this stackoverflow answer pointed me to asynchat. I ended up writing a tiny client by extending
asynchat, and Turns out I didn’t want a
telnetlib alternative; I wanted a module that did much less!
telnetlib doesn’t seem to queue writes. You can send two writes in a row, but there’s no guarantee the second one will be received by the server. Troublesome if you’re trying to use a second write as a way to determine when the first write has finished executing. Fortunately
asynchat.push() works like a boss.
– More information and a code sample can be found at stackoverflow. I have personal insight on a code problem about once in a bazillion years, so this is very exciting to me.
If this post helps one person headbang only by choice, I have succeeded.