lesen/verwerten von Hinweisen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

Guten Tag,
ich lerne gerade zu programmieren. Meistens ist mir Google eine große Hilfe. Leider komme ich jetzt nicht weiter:
Ich möchte auf eine Seite per Api zugreifen. Dabei kommt dieser Fehler:
Bild
Ich will den Hinweis weiterverarbeiten, jedoch weiß ich nicht, wie ich den innerhalb meines Botes lesen und speichern kann.
Ich würde mich über eine Antwort freuen.
Liebe Grüße
Oliver
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte Fehlermeldungen im Text, und nicht als Bild posten.

Und ohne Code kann man auch nicht sagen, wie du auf diesen Fehler reagieren kannst.
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

Die Fehlermeldung:
504 Server Error: Gateway Time-out for url: https://api.kraken.com/0/public/Ticker

Code: Alles auswählen

ethTicker = client.query_public('Ticker',{'pair': 'XETHZEUR'})
print(ethTicker)
Wenn ich nicht die Informationen erhalte, die angefragt sind, stürzt der Bot ab. Er kommt also gar nicht zum print.
Ich würde gerne auf die Fehlermeldung zugreifen damit ich erneut die Daten abfragen kann.
Soweit komme ich aber nicht.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

Und welche Exception wird ausgelöst? Diesen HTTPError kann man dann abfangen und verarbeiten.
Benutzeravatar
sparrow
User
Beiträge: 4537
Registriert: Freitag 17. April 2009, 10:28

Das abfangen von Fehlern ist absolutes Grundwissen in Python. Deshalb wird das auch ausgiebig in der offiziellen Dokumentation behandelt.
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

Ich kannte das except nicht. Hab mich eingelesen und ausprobiert. Aber es klappt immer noch nicht. Bitte um Hilfe :)
Hier ist der Codeabschnitt:

Code: Alles auswählen

        try:
            ethTicker = client.query_public('Ticker',{'pair': 'XETHZEUR'})
        except Exception as Error:
            print(Error)
Der Bot geht trotz dem Fehler nicht in den except rein.
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie sieht denn die Fehlermeldung aus? Handelt es sich jetzt um die Warnung oben im Bild oder die Exception im zweiten Beitrag?
Bei Warnungen kann man, je nachdem wie die Warnung erzeugt wird, erzwingen, dass sie in eine Exception umgewandelt wird: https://docs.python.org/3.7/library/war ... ngs-filter
Benutzeravatar
sparrow
User
Beiträge: 4537
Registriert: Freitag 17. April 2009, 10:28

Das im Bild ist ja auch kein Fehler mit einem Hinweis auf ein Problem im Code, sondern da wird ja ein Problem mit den übermittelten Daten mitgeteilt.

Also: wir brauchen den entsprechende Quellcode und eine Kopie der vollständigen Fehlermeldung. Sonst ist das blinde Kuh spielen.
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

Denn 504 Server Gateway Fehler konnte ich dank euch beheben.
Aber mit Warnings komme ich nicht weiter:
WARNING:btcde:API Error Code: 19
WARNING:btcde:API Error Message: The amount is more than your available balance.
WARNING:btcde:API Error URL: https://api.bitcoin.de/v2/orders?max_am ... &type=sell
Ich habe probiert den Warning in einen Error umzuwandeln:

Code: Alles auswählen

warnings.filterwarnings("error")
und:

Code: Alles auswählen

warnings.simplefilter("error")
Dann bekomme ich aber die Antwort:
Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
Aber eingentlich ist eine Function, die in der Version 3.8 erlaubt ist.
https://docs.python.org/3.8/library/war ... ngs-filter

Wie kann ich die Warning meldung zum Error umwandeln?
Danke im voraus
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Also ich finde jede Menge Beispiele in der offiziellen API, die Fehlerbehandlung verschiedenster Arten zeigen - zB https://github.com/veox/python3-krakene ... ons.py#L13
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Hast du dir vielleicht mal überlegt eine vorhandene Libs anzuschauen?
Ich denke CCXT ist da sehr umfangreich und in auch in Py verfügbar
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

__deets__ hat geschrieben: Freitag 1. Februar 2019, 20:52 Also ich finde jede Menge Beispiele in der offiziellen API, die Fehlerbehandlung verschiedenster Arten zeigen - zB https://github.com/veox/python3-krakene ... ons.py#L13
Auf der Seite werden nur Fehler abgefangen, jedoch möchte ich Warnings abfangen. Dies wird dort aber nicht gezeigt. Falls Sie noch eine Seite bei denen Warnings abgefangen werden gefunden haben, bitte ich Sie die hier zu posten.
Vielen Dank
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ist das ueberhaupt die richtige API? Du hast nirgendwo geschrieben, WAS du genau verwendest. Denn ich sehe in dem gesamten repository keine WARNING Ausgabe drin. Welche Software GENAU wird verwendet?
Sirius3
User
Beiträge: 18269
Registriert: Sonntag 21. Oktober 2012, 17:20

@Oliver Podolak: wie erwartest Du, dass man Dir helfen kann, wenn Du nicht zeigst, was Du machst? Das Modul, das Du verwendest, scheint das nicht vorzusehen.
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

Sirius3 hat geschrieben: Samstag 2. Februar 2019, 18:33 @Oliver Podolak: wie erwartest Du, dass man Dir helfen kann, wenn Du nicht zeigst, was Du machst? Das Modul, das Du verwendest, scheint das nicht vorzusehen.
Das Modul zum Warning ist:

Code: Alles auswählen

def openOrderBtd(btdSellPrice):
    while 1:
        try:
            Order = conn.createOrder(order_type = 'sell',
                                     trading_pair = 'etheur',
                                     max_amount =  1.00, 
                                     price = btdSellPrice, 
                                     min_amount = 1.00,
                                     payment_option = 1
                                    )
        except Exception as OrderError:
            bot.sendMessage(oliversId, 'Error sending Order on Btd. Error message: ' + str(OrderError))
            bot.sendMessage(mariusId, 'Error sending Order on Btd. Error message: ' + str(OrderError))
            sleep(1)
        else:
            print('Order on Btd: ' + str(Order))
            break
    
    return Order['order_id'], btdSellPrice
Es tut mir leid, dass ich es nicht von anfang an gepostet habe. Wie ich schon geschrieben habe, bin ich ein Anfänger, der sich versucht alles beizubringen.
Leider komme ich manchmal nicht weiter, deswegen freue ich mich über eure Unterstützung.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

In diesem Code sehe ich nicht den Code, der oben steht (mit query_public), und der vermeintlich die Warnung schmeisst. Wo steht der, und welche Bibliothek wird da verwandt?
Oliver Podolak
User
Beiträge: 7
Registriert: Donnerstag 31. Januar 2019, 14:27

Wie ich schon vorher geschrieben habe, konnte ich das Problem mit dem query_public dank euch lösen. Der neue Code benutzt die btcde Bibliothek.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ist eine schlechte API - statt die Fehler zugreifbar zu machen, werden sie ausgegeben, aber dann verschluckt.

https://github.com/peshay/btcde/blob/b9 ... de.py#L168

Die muss man dann halt anpassen. Und zb in HandleAPIerrors passende Ausnahmen generieren.
Antworten