2012-03-29 9 views
4

Ich habe an einem Pixelserver gearbeitet, der mit Haskell Warp erstellt wurde, und ich habe Mühe, herauszufinden, wie ich ihn im Daemon-Modus ausführen kann.Wie kann Warp im Daemon-Modus ausgeführt werden?

Warp funktioniert super - ich run von Network.Wai.Handler.Warp HTTP dienen können, runTLS von Network.Wai.Handler.WarpTLS HTTPS zu dienen, und ich kann beide laufen durch einen neuen Thread Laichen:

Mein Problem ist herauszufinden, wie von MissingH (System.Daemon) zu verwenden, um meinen Server losgelöst und läuft im Hintergrund auf Ubuntu.

In meinem Main.hs Ich habe versucht, wie so eine detachDaemon Aktion hinzufügen:

main :: IO() 
main = 
    detachDaemon >> cmdArgs options >>= getConfig . optionsConfig >>= start 

aber das Programm beendet dann nur leise ohne Fehler und ohne etwas zu zeigen, wenn ich ps -ef | grep snowhuskyd laufen.

Wie sollte ich detachDaemon verwenden - ist es sogar mit Warp möglich? Ich kann kein einziges Beispiel finden, detachDaemon im Web zu verwenden - jede Hilfe würde dankbar empfangen werden!

Antwort

6

Ich habe etwas mehr gräbt getan und gefunden this thread, wo ein Yesod Benutzer (Yesod ist der oben auf Warp gebaut Web-Framework) fragt, wie hdaemoniz e (andere daemonization lib) und die Yesod/Warp daemonize Yesod mit Haupthoncho Michael Snoyman sagt:

Als beiseite, ich nicht einverstanden mit der Vorstellung, dass daemonizing ist die richtige Art und Weise einen Prozess zu führen, und denken, dass Upstart (oder daemontools oder Engel, oder ...) ist der richtige Ansatz. Aber ich weiß, andere haben verschiedene Meinungen dazu.

Mit anderen Worten: Ich denke nicht, dass es etwas ist, das wir beheben können, und in diesem speziellen Fall denke ich nicht, dass es sich lohnt, zu reparieren.

Angel vom Bump-Team sieht besonders schön, und es ist in Haskell geschrieben, vielleicht sollte ich damit gehen, anstatt zu versuchen, daemonization in meine eigene App Schuhanzieher.

Ich lasse diese Frage offen für jetzt, falls Leute andere Ideen haben!

+3

Ich teile diese Sichtweise, und ich löse meine Dämonen von draußen. Eine schnelle und schmutzige Lösung ist die Verwendung von Start-Stop-Daemon, wenn Sie es auf Ihrem System haben. –