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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。