django 队列,django消息队列中间件

  django 队列,django消息队列中间件

  吉图布:https://github.com/rq/django-rq

  RQ(Redis队列),人如其名,用存储做的队列任务

  redis,众所周知,它的列表可以做队列,rq就是把工作放进队列里,然后启工人挨个做完

  另外赛车皇后极其简单,官方文档短小精悍,容易上手

  [安装]

  点安装姜戈-rq添加配置:

  修改配置setting.py

  INSTALLED_APPS=[

  .

  姜戈_rq ,

  ]

  注意:这里使用的下划线,

  RQ_QUEUES={

  默认:{

  主机:本地主机,

  端口:6379,

   DB: 0,

  密码:某个密码,

  默认超时:360,

  },

  使用-哨兵:

  哨兵:[(localhost ,26736),( localhost ,26737)]

   MASTER_NAME: redismaster ,

   DB: 0,

  密码:秘密,

  SOCKET_TIMEOUT :无,

  CONNECTION_KWARGS :

  "套接字连接超时":0.3

  },

  },

  高:

   URL: os.getenv(REDISTOGO_URL , redis://localhost:6379/0 ),#如果你在架构设计上

  默认超时:500,

  },

  低:

  主机:本地主机,

  端口:6379,

   DB: 0,

  }

  }

  RQ _ EXCEPTION _ HANDLERS=[ path。敬。我的。处理程序]#如果需要自定义异常处理程序

  #默认、高、低表示队列的优先级,高默认低

  # 但是如果一大批低的队列的工作在执行的话,此时高的队列开始入队工作,不会马上下一个任务就开始执行高的队列,而是会继续执行低的队列,直至低的队列任务执行完毕支持使用姜戈-雷迪斯和django-redis-cache

  缓存={

  redis-cache: {

  后端: redis_cache.cache.RedisCache ,

  位置:本地主机:6379:1 ,

  选项:{

  CLIENT _ CLASS : django _ redis。客户。默认客户端,

  最大条目数:5000,

  },

  },

  }

  RQ_QUEUES={

  高:

  USE_REDIS_CACHE: redis-cache ,

  },

  低:

  USE_REDIS_CACHE: redis-cache ,

  },

  }添加日志配置:

  日志记录={

  版本:1,

   disable _ existing _ loggers :False,

  格式化程序:{

  rq_console :

  格式:%(asctime)s %(消息)s ,

  datefmt: %H:%M:%S ,

  },

  },

  处理程序:{

  rq_console :

  级别:调试,

  类别“:”rq。utils。colouringstreamhandler ,

  格式化程序: rq_console ,

  exclude: [%(asctime)s],

  },

  #如果你用哨兵伐木

  哨兵:

  级别:错误,

  类:乌鸦。贡献。姜戈。经手人。哨兵处理员,

  },

  },

  "记录器":{

  rq.worker :

  handlers: [rq_console , sentry],

  级别:调试

  },

  }

  }

  添加路由:

  修改urls.py

  #适用于Django 2.0

  urlpatterns=[

  url(r^django-rq/,包括( django_rq.urls ),

  ]

  #对于Django=2.0

  urlpatterns=[

  路径( django-rq/,包含( django_rq.urls ))

  # 添加后台查看

  路径(radmin/django-rq/,包含( django_rq.urls ),

  ]使用:

  1.使用@工作装饰器

  @job(默认,超时=3600)

  def long_running_func()。

  及格

  long_running_func.delay() #超时3600秒的入队函数。

  实战:

  在项目目录下添加tasks.py处理任务文件

  从姜戈_rq导入作业

  导入日志记录

  logger=日志记录。获取记录器(“worker”)

  @job(默认,超时=360)

  定义同步迁移记录(消息):

  同步迁移记录

  logger.info(消息)然后在任意一个视图文件中添加任务:

  从xxx .任务导入同步迁移记录

  定义测试任务(请求):

  同步迁移记录延迟(您好,rq’)

  指定任务:

  python manage.py rqworker上限默认下限

  #在高默认低三个队列各自启动一个工人,注意了,由于姜戈_rq调用Linux操作系统操作系统中fork(),所以只能在Linux操作系统操作系统系统中执行,windos可以尝试win10的子系统更多:

  查看队列执行状况多种办法

  1.配置好的权限中查看,种类齐全,最佳查看方式

  2.python manage.py rqstats

  python管理。py rq stats-interval=1 #每秒刷新(其实刷新并不及时)

  python manage.py rqstats - json #输出数据

  python manage.py rqstats - yaml #输出YAML

  3.进入存储库中可以看到自己的队列,工人,以及作业(作为辅助验证使用)

  4.rq也有命令可以启动和查看状态,大家可以自己看看

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: