[Haskell-cafe] Yesod and concurrency

Michael Snoyman michael at snoyman.com
Thu Feb 3 15:30:05 CET 2011


On Thu, Feb 3, 2011 at 3:14 PM, Ertugrul Soeylemez <es at ertes.de> wrote:
> Michael Snoyman <michael at snoyman.com> wrote:
>
>> On Mon, Jan 31, 2011 at 1:09 PM, Ertugrul Soeylemez <es at ertes.de> wrote:
>>
>> > how well do WAI, Yesod and the 'persistent' package play with
>> > concurrency?  For example, I'd like to write a program, which
>> > concurrently provides two related sites as well as a few background
>> > workers, which do something with the database.  My idea would look
>> > something like this:
>> >
>> >  main :: IO ()
>> >  main =
>> >    withMyAppPool $ \pool -> do
>> >      forkIO $ worker1 ...   -- background worker
>> >      forkIO $ worker2 ...   -- background worker
>> >      forkIO $ worker3 ...   -- background worker
>> >      forkIO $ toWaiApp ...  -- site 1
>> >      forkIO $ toWaiApp ...  -- site 2
>> >
>> > Will I run into problems with this?
>>
>> There should not be any issues, just make sure you compile with
>> -threaded. The persistent database connection pool should work just
>> fine for this. If you find any issues, please let me know, but I have
>> not had trouble in the past.
>
> I've run into the first problem with this.  Without having to use
> subsites, what's an easy method to use wai-handler-devel with such a
> setup?

I believe the new architecture in use for wai-handler-devel 0.2 (which
will work with Yesod 0.7) should work properly with multi-threaded
apps. But yes, there's no easy way to do this with the current
wai-handler-devel.

Michael



More information about the Haskell-Cafe mailing list