Funktionierendes Skript - wie mit upgrades umgehen?

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
August1328
User
Beiträge: 71
Registriert: Samstag 27. Februar 2021, 12:18

Hallo zusammen,

ich habe die letzten Monate ein kleines trading Skript geschrieben, welches macht was es soll und funktioniert.

Wenn ich Zeit habe und so wie heute das Wetter bescheiden ist, arbeite ich an offenen Punkten oder Verbesserungen. Einer der Punkte auf meiner 2Do-Liste lautet "Upgrade Module", den ich schon eine Weile vor mir her schiebe, da ich nicht ganz sicher bin, welches der richtige Weg ist.

Ich befürchte ein wenig, daß durch Upgrades ein Punkt kommt, an dem das Skript nicht mehr funktioniert bzw. Befehle "deprecated" sind und ich das Skript dann umschreiben darf.

Dabei muss ich noch hinzufügen, daß ich beim async Part über ne Woche gebraucht habe, die Verbindung zur API zum Laufen zu bringen, da die Vorgaben in der Doku des Anbieters zumindest für mein Betriebssystem nicht gestimmt haben. Ich habe mich dann durch alle Issues von asnycio auf github gewühlt und eine der Lösungsvorschläge von einem User hat dann endlich geklappt. D.h. ich nutze nicht das neueste asyncio Modul, da hier eine Abhängigkeit zur Serverseitigen Version besteht

Möglichkeiten:
  • Never touch a running system: Das wäre der bequemste Weg - ich denke aber, daß ich mit dem Laufe der Monate mit Upgrades immer weiter in den Rückstand gerate, bis ich irgendein Upgrade machen muss und dann könnten viele Code-Änderungen notwendig sein
  • Wenn Upgrades vorhanden sind, per "pip list" den funktionierenden Stand dokumentieren und die Module einzeln und schrittweise upgraden und testen
  • Was sollen die Bedenken? Wie z.B. bei Windows macht es Sinn, immer die neueste Version / Upgrades installiert zu haben...
Wie seht bzw. macht Ihr das?

Gruß, Andy
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@August1328,

das ist pauschal schwer zu sagen. Es ist auch etwas unklar, was das Problem ist.

Code: Alles auswählen

daß ich beim async Part über ne Woche gebraucht habe, die Verbindung zur API zum Laufen zu bringen, da die Vorgaben in der Doku des Anbieters zumindest für mein Betriebssystem nicht gestimmt haben.
Was für eine Schnittstelle ist das denn, dass es abhängig vom Betriebssystem wäre?
ich nutze nicht das neueste asyncio Modul
Es wurde ja eigentlich nur die Syntax mit den letzten Releases verbessert. Funktional dürfte sich eher wenig geändert haben. Ich könnte mir vorstellen, dass durch Benutzung einer neueren Version einiges einfacher wird.

Tja, ich wüsste keinen Grund warum man da nicht upgraden sollte.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich nutze pipenv, um meine Abhängigkeiten reproduzierbar zu halten.
August1328
User
Beiträge: 71
Registriert: Samstag 27. Februar 2021, 12:18

danke für die schnelle Rückmeldung! Ich habe gerade nochmal in die Doku geschaut und habe einen Fehler gemacht. Es geht um socketio, welches die Anhängigkeit bedingt und nicht asyncio.

Sorry, das kommt davon, wenn man 2 Sachen gleichzeitig macht...
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Auch bei socketio kann ich mir nicht vorstellen wo das Problem liegen könnte, auf eine neuere Version zu aktualisieren.
August1328
User
Beiträge: 71
Registriert: Samstag 27. Februar 2021, 12:18

rogerb hat geschrieben: Montag 16. August 2021, 18:05 Auch bei socketio kann ich mir nicht vorstellen wo das Problem liegen könnte, auf eine neuere Version zu aktualisieren.
Hallo rogerb, OK, interessant...

in der Doku für die API stand, man muss ne socket.io Version 2 nicht 3 installieren. Das hatte ich gemacht und habe nen Fehler erhalten, den ich nicht gelöst bekommen habe.

Dann habe ich natürlich rumprobiert, mit dem support Kontakt aufgenommen und viel im Internet recherchiert, aber der Fehler "socketio.exceptions.ConnectionError: OPEN packet not returned by server" blieb.

Kurz bevor ich aufgegeben habe, habe ich dieses Issue bei github gefunden und alles getestet: https://github.com/miguelgrinberg/pytho ... issues/586

Mit der Installation von "pip install python-engineio==3.14.2 python-socketio[client]==4.6.0" (steht kurz vor der Mitte) hat es dann funktioniert.

Seitdem habe ich das nicht mehr angerührt :lol: es läuft. Ich hatte das noch an den support weiter gegeben und die wollten die Doku aktualisieren, was sie nicht getan haben. Etwas komisch, mir inzwischen egal, die Schnittstelle läuft seitdem fast fehlerfrei.

Nur meine "Sorgen" sind geblieben wieder in ein unbekanntes Problem zu rennen, das ich nur schwer bis gar nicht gelöst bekomme.

Grüße
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Ja wenn sie die Doku nicht aktualisieren ist das natürlich schwierig.
Hier ist eine Tabelle, so dass du bei dir wenigstens schauen kannst, was kompatibel ist:
https://python-socketio.readthedocs.io/ ... patibility

Was die API des Anbieters betrifft kannst du da ja anscheinend nicht so sicher sein. Andererseits kann es auch nicht so viele Möglichkeiten geben.
Wenn ich die Tabelle richtig deute, must du erstmal auf deiner aktuellen Version bleiben.
Wenn der Anbieter dann mal wieder stillschweigend ein Upgrade macht, must du eben für python-engineio und python-socketio auf jeweils 4.x und 5.x upgraden.
August1328
User
Beiträge: 71
Registriert: Samstag 27. Februar 2021, 12:18

Danke für die Bestätigung, daß ich nicht total bescheuert bin... :D

Die Tabelle kenne ich. Als ich die das erst mal gesehen habe, dachte ich, hä? python-socketio version 2 wird doch gar nicht unterstützt, aber das war nur 1 der vielen Fragezeichen die ich hatte...

Nachdem ich nun eine Lösung habe, glaube ich, daß der Hinweis in der Doku mit Version 2 die JavaScript Socket.IO version betrifft, also ganz linke Spalte, dann machen die Python Versionen auch Sinn. Nur steht halt in der Doku unter Python immer noch der Hinweis mit Version 2. Ich denke inzwischen, der Text wurde aus der Node.js Doku kopiert und nicht angepasst. Der Anbieter hat eine Node.js Sandbox zum Testen, Python scheint später hinzugekommen zu sein.

Wie auch immer, ich bin froh daß es klappt und mit den Hinweisen hier werde ich die Module schrittweise upgraden und testen. Auch pipenv schaue ich mir mal an.

Gruß & schönen Abend
Antworten