Bonjour à tous,

J'ai une fonction qui me permet d'envoyer des données sur un serveur distant, via le WiFi.

Il y a une partie qui va définir le timeout

Code : Sélectionner tout - Visualiser dans une fenêtre à part
c.setopt(c.TIMEOUT_MS, 3000)
Il m'est arrivé une fois qu'une erreur se produise à ce niveau et le programme c'est arreté, et il ne le faut pas.

J'ai donc mis un try:

Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 print('[INFO] Sending data with PycURL')
        c = pycurl.Curl()
        c.setopt(c.URL, 'http://demo.eco-sensors.ch/include/save_aqi_n.php')
        c.setopt(c.HTTPHEADER, ['Accept: application/json','Content-Type: application/json'])
        c.setopt(c.POST, 1)
 
        try:
            # If you want to set a total timeout, say, 3 seconds
            c.setopt(c.TIMEOUT_MS, 3000)
            print("!!! CHECK HERE !!!")
            ## depending on whether you want to print details on stdout, uncomment either
            # curl.setopt(c.VERBOSE, 1) # to print entire request flow
            ## or
            # curl.setopt(p.WRITEFUNCTION, lambda x: None) # to keep stdout clean
 
            #body_as_dict = {"dev_id": "12", "path": "def", "target": "ghi"}
            body_as_dict = data
            body_as_json_string = json.dumps(body_as_dict) # dict to json
            body_as_file_object = StringIO(body_as_json_string)
 
            # prepare and send. See also: pycurl.READFUNCTION to pass function instead
            c.setopt(c.READDATA, body_as_file_object) 
            c.setopt(c.POSTFIELDSIZE, len(body_as_json_string))
            c.perform()
 
            status_code = c.getinfo(pycurl.RESPONSE_CODE)
            if status_code != 200:
                print("Server returned HTTP status code {}".format(status_code))
                #print('Device error: {}'.format(e))
 
             c.close()
             return 1
        except:
            c.close()
            // Log something
            continue
            return -1
Si tout se passe bien, il ferme la connexion, et si ca ne passe mal il ferme aussi la connexion, mais le script doit continuer.

Je ne sais pas trop si c'est juste comme je l'ai fait et surtout si je peux avoir un return -1, après le continue.
Et comment je peux afficher le message d'erreur qui m'indiquerait la source de l'erreur? Car l'erreur peut aussi venir d'ailleur que du timeout

J'ai aussi vu

mais est-ce que je peux mettre un code après, ou il quitte immédiatement le try

Mercii