【发布时间】:2018-11-25 11:04:25
【问题描述】:
我想定期运行一些数据库查询,并根据其状态向用户电子邮件发送通知并更改其帐户状态。我可以在 Yesod 内部进行吗?
【问题讨论】:
-
当然,
forkIO是你的朋友。 -
@arrowd,你能给我一个代码示例吗?
标签: haskell yesod subroutine web-development-server keter
我想定期运行一些数据库查询,并根据其状态向用户电子邮件发送通知并更改其帐户状态。我可以在 Yesod 内部进行吗?
【问题讨论】:
forkIO 是你的朋友。
标签: haskell yesod subroutine web-development-server keter
我从 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。
等到上午 10 点
我不知道你的时区、环境、数据库结构等,所以我希望你自己写细节。 例如,如果你把threadDelay放在forever,每十分钟检查一次,把你发送邮件的日期放在数据库里,如果你不发送,超过上午10点就调用它。
捕捉错误
请决定发生错误时应进行何种处理。
我想以一种永不停止的方式处理错误
您可以命名要在 forkHandler 中传递的函数,并在出错时再次调用它。
【讨论】: