我们计划从django搬到golang。
要发送电子邮件或短信,我们在Django为芹菜工人提供redis / rabbotmq。 但是我们怎样才能在golang上完成后台任务。
例如:
def api_view():
// logic
// celery tasks- call email/sms service
// immediate response to client
return Response()
我们如何在golang中做到
fun ApiView(w http.ResponseWriter, req *http.Request){
//logic
// need to call email/sms service
fmt.Fprintf(w, "TEST")
}
我们可以在gorilla / mux的API视图中开始新的例程(没有额外的redis / worker)吗?
感谢。
答案 0 :(得分:0)
是的!正如评论所述,您可以在视图的上下文中生成新的go例程。 goroutine获得自己的堆栈并允许它以异步方式运行#34;来自视图处理功能:
func ApiView(w http.ResponseWriter, req *http.Request){
//logic
// need to call email/sms service
go sendEmail(someEmailAddress)
fmt.Fprintf(w, "TEST")
}
这将使用go例程执行sendEmail
并立即将TEST
写入调用者。
虽然微不足道,但它并不等同于芹菜redis / rabbitmq:
上述所有内容都不是特别困难,而且完全可行(并且存在大量模式/博客/库来执行此类操作)