使用Haskell Servant在后台处理作业

时间:2017-08-20 01:06:13

标签: haskell servant

我正在构建一个Facebook Messenger聊天机器人,可以处理长时间运行的作业(可能会失败),我需要在作业完成之前向Facebook回复200.

我尝试过使用Pipes,但过了一段时间后我意识到我并不知道自己在做什么。

我怎样才能做到这一点?

提前致谢

编辑: 正如epsilonhalbe指出的那样,问题非常广泛。我会尽力说清楚。

现在我有这个:

myHandler :: Message -> Handler Text
myHandler msg = do
    doSomeStuff msg
    return "ok"

问题是" doSomeStuff"是一个很长的过程,它可以给出超时错误。所以我想要实现的是回应" ok"在流程完成之前。 Http代码是202 Accepted。

我当时认为向邮箱发送邮件可能是一种解决方案。但是我想要一种比较惯用的方法。

1 个答案:

答案 0 :(得分:1)

我在工作中使用hworker这样的事情 - 发送批量电子邮件。您为长期工作制作JobToJSONFromJSON的实例,然后在您想要开始工作时使用queue。您还需要Redis来跟踪您的工作状态以使用hworker。