Hallo zusammen,
bin freudig auf dieses deutschsprachige Python-Forum gestoßen und möchte es gleich mit einer Frage füttern: kennt wer einen Weg, Applikationen auf der Kommandozeile zu entwickeln, die mit einem ähnlichen Mechanismus arbeiten wie Flask mit seinen Blueprints?
Die Frage kommt für mich nicht von ungefähr: ich habe für ein Projekt einen sogenannten ETL-Prozess mit Python umgesetzt, der eben Daten von A abholt und in B speichert, damit C sie weiterverarbeiten kann. Es geht hier vor allem um Daten, die in der Quelle linear und nicht vertikal gespeichert sind (ein Objekt hat mehrere Einträge aber immer für eine unterschiedliche Kategorie z.B. Ich aber brauche die Datensätze in einer Reihe angeordnet). Jetzt ist dieser Mechanismus etwas wackelig aus meiner Sicht. Ich verwende ein Haupt- und verschiedene Nebenkonfigurationsdateien, die Auskunft darüber geben, welches Modul da ist und auch aktiv ist.
Beispiel: in der Hauptkonfig ist angegeben, welche Module es gibt. In der (namentlich gleichlautenden) Nebenkonfigurationsdatei des Moduls, steht dann drinnen, welche Funktionen es gibt, in welcher Reihenfolge diese abgearbeitet werden sollen (bei Aufruf aller Funktionen) und ob diese aktiv ist, etc. Wenn ich allerdings von vornherein schon so etwas wie einen Blueprint-Ansatz hätte, bei dem ich das Modul schon alleine durch den Aufruf register_blueprint laden kann und danach aufrufe, wäre mir viel geholfen und wäre auch nicht mehr so fehleranfällig in der Konfigurationsdatei.
Aus Flask kenne ich solche Blueprints, allerdings ist mir ein passendes Modul oder Tutorial für einen gleichartigen Mechanismus außerhalb von Flask bisher nicht untergekommen.
Hat jemand hier schon einmal einen ähnlichen Ansatz verfolgt und gelöst?
Besten Dank im Voraus! Beste Grüße, Thomas
Blueprints für Commandline Applikationen
Leider nicht. Falls du aber an Alternativen zu deinem Blueprint-Ansatz interessiert bist, kannst du ja die Details deines Prozesses noch mal etwas ausführen: Was heißt denn überhaupt "wackelig" und was hat es mit den "aktiven" und "inaktiven" Modulen auf sich? Geht es einfach darum, dass du Verschiedene, teilweise von einander abhängige Einzelschritte hast, die koordiniert ausgeführt werden sollen?mosesontheweb hat geschrieben: ↑Montag 6. Mai 2019, 11:55 Hat jemand hier schon einmal einen ähnlichen Ansatz verfolgt und gelöst?
Der derzeitige Ansatz ist, dass ich über ein erstes Konfigurationsfile Adaptionen anführe. Ist ein Array mit Namen wie abc oder def. Steht das in dem Array, dann kann das Modul ausgeführt werden. Dazu muss es eine abc.yml und ein abc.py geben. In abc.yml stehen diverse Settings, die für das Modul interessant sind, allen voran die Funktion. Der Abschnitt im .yml-File hat den gleichen Namen wie die Funktion im Modul, d.h. es gibt einen Abschnitt 'functions', unter dem sich dann die Funktionsnamen aus dem Modul befinden. Unter diesen wiederum stehen dann verschiedene Parameter, die für die Funktion notwendig sind.nezzcarth hat geschrieben: ↑Montag 6. Mai 2019, 20:00Leider nicht. Falls du aber an Alternativen zu deinem Blueprint-Ansatz interessiert bist, kannst du ja die Details deines Prozesses noch mal etwas ausführen: Was heißt denn überhaupt "wackelig" und was hat es mit den "aktiven" und "inaktiven" Modulen auf sich? Geht es einfach darum, dass du Verschiedene, teilweise von einander abhängige Einzelschritte hast, die koordiniert ausgeführt werden sollen?mosesontheweb hat geschrieben: ↑Montag 6. Mai 2019, 11:55 Hat jemand hier schon einmal einen ähnlichen Ansatz verfolgt und gelöst?
Beispiel:
Code: Alles auswählen
functions:
meine_function_1:
enabled: true
update: true
delete: true
unique_key: uuid
fields: ['field1', 'field2', ...]
Code: Alles auswählen
elias.py execute <adaption> <function>
Aber den ersten Resonanzen nach bin ich scheinbar ein Depp, der schon nichts mehr sagen sollte .... sorry für Eure Zeit.
Beste Grüße, Thomas
@mosesontheweb: ich verstehe noch nicht, was eigentlich das Problem ist, das Du lösen möchtest. Kannst Du ein minimales Beispiel geben, inklusive Code und Konfigurationen, das zeigt, was Du machen möchtest, und erklären, an welcher Stelle Dir das nicht gefällt.
Nein, das hat doch keiner gesagt. Schade, dass du scheinbar abgeschreckt bist. Ich muss zugeben, dass ich nicht ganz nachvollziehen kann, was diese Reaktion ausgelöst hast. Der Umgangston hier im Forum kann zwar manchmal etwas direkt sein, aber in diesem Thread ging es nach meinem Empfinden doch recht sachlich zu.mosesontheweb hat geschrieben: ↑Dienstag 7. Mai 2019, 08:25 Aber den ersten Resonanzen nach bin ich scheinbar ein Depp, der schon nichts mehr sagen sollte .... sorry für Eure Zeit.
....
Hat sich erledigt, ich verfolge das Thema nicht mehr weiter.