ConnectionError handling problem

Cameron Simpson cs at zip.com.au
Sat Sep 26 17:43:24 EDT 2015


On 26Sep2015 09:46, Gonzalo V <gvm2121 at gmail.com> wrote:
>Hi Cameron.
>i had the same problems and you have to tell to python what to do with the
>connect problem.

Definitely. That's why we're encouraging him to handle specific exceptions.

>try this:
>...
>except *urllib.error.HTTPError* as e:
>            if e.getcode()==504:
>                disp = "SIN RESPUESTA DEL SERVIDOR" #(No answer from the
>server)
>                nombre=''
>                origen=''
>
>                precioAhora=''
>                print(e.getcode(),disp)
>                pass

You're aware that the "pass" there does nothing? Perhaps you're considering 
"continue"?

Normally when I write a specific clause like that it looks a bit like this:

  try this:
    ...
  except *urllib.error.HTTPError* as e:
    if e.getcode()==504:
      warning("about 504 error...")
      nombre = ''
    else:
      raise

This arranges that for _other_ HTTPErrors which I do not correctly handle that 
the exception is reraised.

>greeting from Chile. Sorry my english.

Don't apologise. Thank you for working in a second language to accomodate us. I 
apologise for my Spanish, which is nonexistent :-(

Cheers,
Cameron Simpson <cs at zip.com.au>

>Saludos,
>Gonzalo
>
>2015-09-25 3:24 GMT-04:00 Cameron Simpson <cs at zip.com.au>:
>
>> 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:
>>
>>  try:
>>    r=requests.post(url, data=query_args)
>>  except:
>>    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.
>>
>>
>> Cheers,
>> Cameron Simpson <cs at zip.com.au>



More information about the Python-list mailing list