Ich versuche einen dummen Webserver zu erstellen, der Daten als State
speichert. Ich verwende Web.Scotty
. Ich habe ReaderT zuvor mit scotty verwendet, um auf config
Ich möchte den Anfangszustand einstellen, wenn das Programm startet, und dann denselben Zustand für die gesamte Lebensdauer des Programms beibehalten.
Wie kann ich das schaffen? (Das Folgende erstellt bei jeder Anfrage einen neuen Status)
%Vor% Das Verhalten, das Sie sehen, ist definitiv das erwartete:
Beachten Sie die Bemerkung zum dritten Argument in der Dokumentation für scottyT
:
-> (m Response -> IO Response)
- Führe monadm
inIO
aus, aufgerufen bei jeder Aktion.
Was Sie tun könnten, ist den Zustand außerhalb der StateT
Monade zu speichern, so dass Sie ihn im Handler jeder Aktion wiederherstellen können. Das naivste, was mir dazu einfällt, wäre so etwas:
aber das spricht nicht wirklich an, was passieren sollte, wenn zwei Anfragen gleichzeitig kommen, es ist nur "das letzte, um Gewinne zu beenden".
Tags und Links haskell monads monad-transformers scotty