Es ist eine Software, die mit Python ein Architekturdiagramm zeichnen kann.
https://diagrams.mingrammer.com
Vor ein paar Tagen wollte ich etwas wie das Folgende an meinen Augen tun, was die Motivation war, die ich machte.
<img src='http://localhost:8080/?
with Diagram("Grouped Workers", show=False, direction="TB"):
ELB("lb") >> [EC2("worker1"),
EC2("worker2"),
EC2("worker3"),
EC2("worker4"),
EC2("worker5")] >> RDS("events")
Ich habe ungefähr 10 Stunden lang gerungen und es geschaffen. Der vollständige Quellcode ist das folgende Repository.
https://github.com/tamuto/diagrams-server
In erster Linie stellt sich die Frage, wie der in der URL übergebene Python-Quellcode kompiliert werden kann. ist. Es ist in Ordnung, es von query_string abzurufen, aber Sie müssen es formatieren und dann kompilieren. Ich habe yapf als Bibliothek benutzt.
Ich hatte geplant, dass sie es beschreiben, einschließlich der Importanweisung, wie sie in Beispielen angegeben ist.
Es wurde jedoch an query_string angehängt, wie `... import EC2from ...`
``, und selbst wenn es formatiert war, konnte es (offensichtlich) nicht getrennt werden.
Hier konnten wir das erwartete Verhalten umsetzen. Mit NodeTransformer neu schreiben, kompilieren und mit exec ausführen.
Ich habe eine Fehlermeldung erhalten, dass kein Leinen unterwegs war, aber ich habe es sicher mit `ast.fix_missing_location
`gelöst. (Ich glaube das habe ich getan ...)
Wenn Sie mit svg ausgeben, wird eine Symbolanforderung separat generiert. Ich habe es gewaltsam mit Flask's Route verarbeitet. (Da es im Docker läuft, sollte es erlaubt sein !?)
Ich habe mein Bestes versucht, um es zu schaffen, aber ich denke, es gibt verschiedene Probleme.
Normalerweise sollte es als Problem geschrieben werden ...
Aus irgendeinem Grund beeilte ich mich, es mit einem Zeitfahrgefühl zu veröffentlichen. Danach möchte ich mich hinsetzen und antworten.
Recommended Posts