ConnectionError handling problem
cs at zip.com.au
Fri Sep 25 09:24:30 CEST 2015
On 24Sep2015 22:46, shiva upreti <katewinslet626 at gmail.com> wrote:
>On Friday, September 25, 2015 at 10:55:45 AM UTC+5:30, Cameron Simpson wrote:
>> On 24Sep2015 20:57, shiva upreti <katewinslet626 at gmail.com> wrote:
>> >Thank you Cameron.
>> >I think the problem with my code is that it just hangs without raising any
>> >exceptions. And as mentioned by Laura above that when I press CTRL+C, it
>> >just catches that exception and prints ConnectionError which is definitely
>> >a lie in this case as you mentioned.
Ok. You original code says:
print "Connection error"
and presumably we think your code is hanging inside the requests.post call? You
should probably try to verify that, because if it is elsewhere you need to
figure out where (lots of print statements is a first start on that).
I would open two terminals. Run your program until it hangs in one.
While it is hung, examine the network status. I'll presume you're on a UNIX
system of some kind, probably Linux? If not it may be harder (or just require
someone other than me).
If it is hung in the .post call, quite possibly it has an established connecion
to the target server - maybe that server is hanging.
The shell command:
netstat -rn | fgrep 172.16.68.6 | fgrep 8090
will show every connection to your server hosting the URL
"http://172.16.68.6:8090/login.xml". That will tell you if you have a
connection (if you are the only person doing the connecting from your machine).
If you have the "lsof" program (possibly in /usr/sbin, so "/usr/sbin/lsof") you
can also examine the state of your hung Python program. This:
lsof -p 12345
will report on the open files and network connections of the process with pid
12345. Adjust to suit: you can find your program's pid ("process id") with the
"ps" command, or by backgrounding your program an issuing the "jobs" command,
which should show the process id more directly.
Cameron Simpson <cs at zip.com.au>
More information about the Python-list