Haskell,Yesod和Keter - 我如何定期(每5分钟)运行一次例行程序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Haskell,Yesod和Keter - 我如何定期(每5分钟)运行一次例行程序?相关的知识,希望对你有一定的参考价值。
我想定期运行一些数据库查询,并根据其状态向用户发送通知电子邮件并更改其帐户状态。我可以在Yesod本身内完成吗?
答案
我离开了Yesod的问题。
Run Handler code at a specific time within yesod · Issue #1529 · yesodweb/yesod
我不知道你的完整代码。所以,这是提案。
makeApplication :: App -> IO Application
makeApplication foundation = do
unsafeHandler foundation $
forkHandler (\_ -> catchError) $ forever $ do -- catchError do not exist
waitUntil10AM -- waitUntil10AM do not exist
getCheckupR
logWare <- makeLogWare foundation
-- Create the WAI application and apply middlewares
appPlain <- toWaiAppPlain foundation
return $ logWare $ (acceptOverride . autohead . gzip def) appPlain
这个代码点使用unsafeHandler
和forkHandler
。
waitUntil10AM
我不知道您的时区,环境,数据库结构等,所以我希望您自己编写详细信息。例如,如果您永久地放置threadDelay并每十分钟检查一次,请将您已发送邮件的日期放在数据库中,如果您不发送它,则将其调用,并且超过10AM。
catchError
请确定在出错时应该进行哪种处理。
我想以一种永不停止的方式处理错误
您可以命名要在forkHandler中传递的函数,并在出错时再次调用它。
以上是关于Haskell,Yesod和Keter - 我如何定期(每5分钟)运行一次例行程序?的主要内容,如果未能解决你的问题,请参考以下文章
“类型变量不明确”在 Haskell Yesod 中使用 Persistent