2016-06-20 11 views
0

Ich versuche OTP zu lernen, indem ich mir gute Beispiele für Projekte anschaue, die OTP verwenden. Ich habe den Code für mix studiert. Aber es sieht so aus, als ob Mix nicht viel von OTP benutzt.Warum verwendet Mix nicht viel von OTP?

Für mich hat mix viele mögliche Anwendungsfälle für OTP. Beispiele wie, mehrere Dateien gleichzeitig kompilieren, Deps gleichzeitig herunterladen usw.

Ich habe mich gefragt, warum Mix OTP nicht verwendet? Oder ist OTP Overkill für eine CLI-Anwendung? Macht es nur Sinn für lang laufende Anwendungen?

Ich habe auch bemerkt, dass Mix nicht gleichzeitig läuft. Gibt es dafür auch einen Grund?

+0

Interessante Frage, aber scheint eher für eine Mailing-Liste oder ein Forum als StackOverflow. – CoderDennis

Antwort

3

Ich denke, Sie haben Ihre eigene Frage beantwortet. Core-OTP-Konzepte sind möglicherweise nicht für kurzlebige Befehle geeignet.

Zum Beispiel Supervisors sind großartig, wenn Sie viele unabhängige Aufgaben (wie Serververbindungen) haben und wenn einer von ihnen ausfällt, müssen Sie die App weiterhin laufen lassen. Wenn die Aufgabe fehlschlägt, ist es für eine Mischaufgabe nicht sinnvoll, sie erneut zu versuchen. Drucken Sie einfach die Fehlermeldung und beenden Sie sie.

GenServer eignen sich auch hervorragend zum Speichern von Status in Anwendungen mit langer Laufzeit. In CLI-Apps wird jedoch der gesamte Status ad hoc gelesen und dann verwendet, sodass es besser ist, ihn an den Funktionsaufruf zu übergeben.

Es ist jedoch nicht wahr, dass Mix nicht gleichzeitig läuft. Versuchen Sie, htop auszuführen und dann Ihr Projekt zu kompilieren, und es wird alle Ihre Kerne verwenden. mix compile verwendet Parallel-Compiler, um die Dinge zu beschleunigen und es funktioniert gut. Der Status der Kompilierung wird in ETS-Tabellen anstelle von GenServern gespeichert, sodass alle Prozesse gleichzeitig darauf zugreifen können.

OTP sorgt dafür, dass Ihre App auch im Falle eines Ausfalls betriebsbereit bleibt. Dies ist bei Mix nicht der Fall. Sie möchten nicht, dass Mix sich aufhängt und n mal wiederholt, bevor der Fehler gemeldet wird.

Wenn Sie sehen wollen, schöne Verwendung von OTP, ranch ist großartig.