1

我想知道,有人可以举例说明如何从 Yesod 处理程序内部启动线程吗?

我想要这样的东西:

  1. 用户访问 mypage.com/create,这是 Yesod 路由 CreateR

  2. 用户通过按下页面上的按钮发布

  3. CreateR 的 POST 处理程序派生一个新线程,然后将用户重定向到某个“成功”页面。

  4. 线程继续在后台运行,更改其他处理程序将访问的 STM 变量。

我正在使用liftIO,但它因以下错误而崩溃:

Exit code: ExitFailure 139

该文档说明了有关 resourceForkIO 的内容,但我无法让这些类型工作,因为我不知道在哪里/如何使用该功能。

4

1 回答 1

2

我一直这样做,尤其是对于长时间运行的任务:

liftIO $ forkIO $ customizerJob cnStr env

我不使用 ResourceT 或任何 TVar 来交换信息和进度。相反,我使用数据库中的表。非常简单,不需要 haskell monad 转换器和 STM 的神秘知识 :)

于 2013-10-01T03:37:16.437 回答