转载

Machinery —— Go 语言异步任务队列

5月23日 西安 OSC 源创会开始报名啦,存储、虚拟机、Docker 等干货分享

Machinery 是一个 Go 语言的异步任务队列和作业队列,基于分布式消息传递。类似 Python 的Celery 框架。

Machinery 中的任务(或者作业)可通过多个 worker 在很多服务器上并发的执行,或者可在单个服务器上利用 Go 的协程运行多个 worker 进程。

Machinery —— Go 语言异步任务队列

任务的定义:

type AddTask struct{} func (t AddTask) Run(args []interface{}) (interface{}, error) {  parsedArgs, err := machinery.ParseNumberArgs(args)  if err != nil {   return nil, err  }  add := func(args []float64) float64 {   sum := 0.0   for _, arg := range args {    sum += arg   }   return sum  }  return add(parsedArgs), nil } type MultiplyTask struct{} func (t MultiplyTask) Run(args []interface{}) (interface{}, error) {  parsedArgs, err := machinery.ParseNumberArgs(args)  if err != nil {   return nil, err  }  multiply := func(args []float64) float64 {   sum := 1.0   for _, arg := range args {    sum *= arg   }   return sum  }  return multiply(parsedArgs), nil } // ... more tasks 

任务注册:

tasks := map[string]machinery.Task{     "add":      AddTask{},     "multiply": MultiplyTask{}, } app.RegisterTasks(tasks)
正文到此结束
Loading...