2.FastRunner定时任务Celery+RabbitMQ

注意:celery版本和Python冲突问题

不能用高版本Python 用3.5以下,因为项目的celery用的django-celery == 3.2.2

python3.7 async关键字
  • 冲突版本 celery3.x
  • 方案一: celery3.x+python3.6
  • 方案二 : celery4.x+python3.7

解决celery执行时报错:KeyError: 'async' 报错原因:Python3.6及以上版本和celebry4.0以上版本中async关键字发生冲突。

原因分析:
1.这是因为在 python 3.7 中将 async 作为了关键字,所以当 py 文件中出现类似 from . import async, base 这类不符合python语法的语句时,Python会报错;
解决方法: 在 celery 官方的提议下,建议将 kombu下的async.py 文件的文件名改成 asynchronous;然后把引用和这个文件的所有文件的里面的async改为asynchronous;
2. 但是再修改后会报错:No module named ‘kombu.asynchronous’,搜索到的方法是回退版本,然后再次升级到最新版本,不再出现报错(有些人进回退版本就好):
pip uninstall celery && pip install celery==3.1.25;
pip install celery;不过对我都没用,因为发现回退版本后会重置async的修改,进行第一步的报错
3. 之后我从kombu下手,删除原有的kombu,并安装最新的版本后,问题解决:
pip uninstall kombu && pip install kombu

django与 python版本

Django 1.11版本兼容Python 2.7、3.4、3.5、3.6、3.7(added in 1.11.17)# 1.11.5 python<=3.6
 
Django 2.0版本兼容Python 3.4、3.5、3.6、3.7
 
Django 2.1、2.2版本兼容Python 3.5、3.6、3.7
 
Django 3.0版本兼容Python 3.6、3.7、3.8

djangorestframework与django python版本

djangorestframework 3.6.4 (python2.7 django1.11.5)
- Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6) # drf <= 3.8 support python2.7
- Django (1.8, 1.9, 1.10, 1.11)
 
djangorestframework 3.10.0
- Python (3.5, 3.6, 3.7) # drf >= 3.9 support python3.7
- Django (1.11, 2.0, 2.1, 2.2)
 
djangorestframework 3.11.2 (python3.7 django1.11.17 drf3.11.2)
- Python (3.5, 3.6, 3.7, 3.8)
- Django (1.11, 2.0, 2.1, 2.2, 3.0) # the last version which support django 1.11
 
djangorestframework 3.12(latest version 3.12.4 2021-03)
- Python (3.5, 3.6, 3.7, 3.8, 3.9)
- Django (2.2, 3.0, 3.1) # django >= 2.0

1.启动定时任务

1.安装rabbmitMQ中间件,并配置setting中的BROKER_URL(默认一般不用修改)

登陆RabbitMQ后台

  • Centos7
# 注意防火墙是否开放端口
# 防火墙相关操作 https://www.jb51.net/article/147012.htm
http://ip:15672
  • Windows10
http://localhost:15672

2. setting.py

djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
# BROKER_URL = 'amqp://username:password@IP:5672//'
BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'CELERY_TASK_RESULT_EXPIRES = 7200
CELERYD_CONCURRENCY = 1 if DEBUG else 5
CELERYD_MAX_TASKS_PER_CHILD = 40

3.启动定时服务

  1.启动Celery Beat(相当于发送消息给RabbitMQ)
# 使用默认的celery.py启动
python3 manage.py celery beat -l info > ./logs/beat.log 2>&1# 指定的celery.py启动,其中的 -A是指定文件celery -A FasterRunner.celery beat -l info > ~/logs/beat.log 2>&1
2.启动Celery work(处理RabbitMQ中的消息)
# 使用默认的celery.py启动
celery multi start w1 -A FasterRunner -l info --logfile=./logs/worker.log# 指定的celery.py启动,其中的 -A是指定文件
celery multi start w1 -A FasterRunner.celery -l info --logfile=./logs/worker.log

celery -A FasterRunner worker -l info 启动异步worker
python manage.py celery beat -l info  启动beat监听定时任务

4.调试定时任务

发送消息日志

# 发送消息日志
(fastrunner) [root@izwz9awyk38uq20rb3czmnz FasterRunner]# tailf logs/beat.log 
[2019-06-24 18:09:00,000: INFO/MainProcess] Scheduler: Sending due task 每分钟执行一次 (fastrunner.tasks.schedule_debug_suite)
[2019-06-24 18:10:00,000: INFO/MainProcess] Scheduler: Sending due task 每分钟执行一次 (fastrunner.tasks.schedule_debug_suite)
处理消息日志
# 处理消息日志
(fastrunner) [root@izwz9awyk38uq20rb3czmnz FasterRunner]# tailf ./logs/worker.log
[2019-06-24 18:09:00,172: WARNING/Worker-5] Ran 1 test in 0.138s
[2019-06-24 18:09:00,173: WARNING/Worker-5] OK
[2019-06-24 18:09:00,173: DEBUG/Worker-5] 
================== Variables & Output ==================
Type   | Variable         :  Value
------ | ---------------- :  -----------------------------------------------------------------------------------[2019-06-24 18:09:00,199: INFO/MainProcess] Task fastrunner.tasks.schedule_debug_suite[adda0f06-ed65-470c-a7db-7042707f3fd6] succeeded in 0.19341683201491833s: None
[2019-06-24 18:10:00,004: INFO/MainProcess] Received task: fastrunner.tasks.schedule_debug_suite[5eecf0ce-afd5-4b2a-8d60-55a184f093bf]
[2019-06-24 18:10:00,024: WARNING/Worker-1] 111
[2019-06-24 18:10:00,024: WARNING/Worker-1] 111
[2019-06-24 18:10:00,027: INFO/Worker-1] Start to run testcase: 测试用例_登陆
[2019-06-24 18:10:00,028: WARNING/Worker-1] 登陆
[2019-06-24 18:10:00,028: DEBUG/Worker-1] call hook: ${setup_hook_prepare_kwargs($request)}
[2019-06-24 18:10:00,028: INFO/Worker-1] POST /api/user/login/
[2019-06-24 18:10:00,029: DEBUG/Worker-1] request kwargs(raw): {'headers': {'Content-Type': 'application/json'}, 'verify': False, 'json': {'username': 'fastrunner', 'password': 'fastrunner'}}
[2019-06-24 18:10:00,029: DEBUG/Worker-1] processed request:
> POST http://119.23.50.82:8000/api/user/login/
> kwargs: {'headers': {'Content-Type': 'application/json'}, 'verify': False, 'json': {'username': 'fastrunner', 'password': 'fastrunner'}, 'timeout': 120}
[2019-06-24 18:10:00,160: DEBUG/Worker-1] 
================== request details ==================
url              : 'http://ip:8000/api/user/login/'
method           : 'POST'
headers          : {'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '52'}
start_timestamp  : 1561371000.029365
verify           : False
json             : {'username': 'fastrunner', 'password': 'fastrunner'}
body             : b'{"username": "fastrunner", "password": "fastrunner"}'[2019-06-24 18:10:00,161: DEBUG/Worker-1] 
================== response details ==================
status_code      : 200
headers          : {'Server': 'nginx', 'Date': 'Mon, 24 Jun 2019 10:10:00 GMT', 'Content-Type': 'application/json', 'Content-Length': '115', 'Connection': 'keep-alive', 'Vary': 'Accept, Origin', 'Allow': 'POST, OPTIONS', 'X-Frame-Options': 'SAMEORIGIN'}
content_size     : 115
response_time_ms : 131.36
elapsed_ms       : 128.769
encoding         : None
content          : b'{"code":"0001","success":true,"msg":"login success","token":"22b3bf6afd31435e2bdce609713ed7b9","user":"fastrunner"}'
content_type     : 'application/json'
ok               : True
url              : 'http://ip:8000/api/user/login/'
reason           : 'OK'
cookies          : {}
text             : '{"code":"0001","success":true,"msg":"login success","token":"22b3bf6afd31435e2bdce609713ed7b9","user":"fastrunner"}'
json             : {'code': '0001', 'success': True, 'msg': 'login success', 'token': '22b3bf6afd31435e2bdce609713ed7b9', 'user': 'fastrunner'}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python---PyCharm调试技巧--Step over(F8)、Step into(F7)

Step over&#xff08;F8&#xff09;&#xff1a;代码一步一步向下执行&#xff0c;但是遇到了函数以后&#xff0c;不进入函数体内部&#xff0c;直接返回函数的最终的执行结果。------------遇到函数跳过&#xff0c;直接执行最后的结果。 Step into&#xff08;F7&#xf…

UDP网络套接字编程

先来说说数据在网络上的传输过程吧&#xff0c;我们知道系统其实终究是根据冯诺依曼来构成的&#xff0c;而网络数据是怎么发的呢&#xff1f; 其实很简单&#xff0c;网络有五层。如下&#xff1a; 如上图&#xff0c;我们知道的是&#xff0c;每层对应的操作系统中的那些地方…

ESP32-BLE基础知识

一、存储模式 两种存储模式&#xff1a; 大端存储&#xff1a;低地址存高字节&#xff0c;如将0x1234存成[0x12,0x34]。小端存储&#xff1a;低地址存低字节&#xff0c;如将0x1234存成[0x34,0x12]。 一般来说&#xff0c;我们看到的一些字符串形式的数字都是大端存储形式&a…

基于SSM的高校毕业选题管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

flink源码分析之功能组件(一)-metrics

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metric,future。其中kubeclient上一个系列介绍过,本系列不在介绍。 本文介绍flink metrics组件,metric…

OceanBase 4.2.1 LTS 发版 | 一体化数据库首个长期支持版本

在刚刚结束的年度发布会上&#xff0c;OceanBase 沿着“一体化”产品战略思路&#xff0c;发布了一体化数据库的首个长期支持版本 4.2.1 LTS。作为 4.0 系列的第一个 LTS 版本&#xff0c;该版本的定位是支撑客户关键业务稳定长久运行&#xff0c;我们非常认真的打磨了这个版本…

Java学习之路 —— 多线程

文章目录 1. 线程创建方式1.1 继承Thread1.2 声明一个实现Runnable接口的类1.3 利用Callable接口、FutureTask类来实现 2. 线程同步2.1 同步代码块2.2 同步方法2.3 Lock锁 3. 线程同步4. 线程池 1. 线程创建方式 1.1 继承Thread 定义子类&#xff0c;继承Thread&#xff0c;创…

Android描边外框stroke边线、rotate旋转、circle圆形图的简洁通用方案,基于Glide与ShapeableImageView,Kotlin

Android描边外框stroke边线、rotate旋转、circle圆形图的简洁通用方案&#xff0c;基于Glide与ShapeableImageView&#xff0c;Kotlin 利用ShapeableImageView专门处理圆形和外框边线的特性&#xff0c;通过Glide加载图片装载到ShapeableImageView。注意&#xff0c;因为要描边…

Docker 容器中的网络优化与 DNS 缓存清理

在使用Docker 18.03.1-ce版本在Ubuntu 18.04 LTS上运行多个Docker容器时&#xff0c;我发现当使用requests库发送请求到某个主机名时&#xff0c;响应速度非常慢。在本例中&#xff0c;每个容器都有自己的CherryPy服务器&#xff0c;并通过requests.get(http://main:8083)或req…

Nginx 413 Request Entity Too Large

当出现上图时候 更改nginx config 文件 在http{}或者server{}或者location{}中增加client_max_body_size 100m; 然后重启nginx 服务就好了

轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码

轻松搭建短域名短链接服务系统&#xff0c;可选权限认证&#xff0c;并自动生成证书认证把nginx的http访问转换为https加密访问&#xff0c;完整步骤和代码。 在互联网信息爆炸的时代&#xff0c;网址复杂而冗长&#xff0c;很难在口头告知他人&#xff0c;也难以分享到社交媒体…

11 月 18 日 ROS 学习笔记——可视化和调试工具

文章目录 前言一、调试 ROS 节点1. gdb 调试器2. 在 ROS 节点启动时调用 gdb 调试器3. 在 ROS 节点启动时调用 valgrind 分析节点4. 设置 ROS 节点 core 文件转储5. 日志消息1). 输出日志消息2). 设置调试消息级别 二、检测系统状态1. rqt_graph2. 可视化坐标变换3. 保存与回放…

trzsz支持文件拖动到终端进行上传,类似lrzsz

考虑到 LapTop -> Host 1 -> Host 2 -> Docker -> TMUX&#xff0c;使用scp或sftp命令不方便&#xff1b;使用rz和sz命令就会方便很多&#xff0c;但是却又与 TMUX 不兼容&#xff08;备注&#xff1a;Tmux是一个终端复用工具&#xff0c;允许用户在一个终端窗口中…

初学UE5 C++②

目录 导入csv表格数据 创建、实例化、结构体 GameInstance Actor camera 绑定滚轮控制摇臂移动 碰撞绑定 角色碰撞设定 按钮 UI显示 单播代理 多播和动态多播 写一个接口 其他 NewObject 和 CreateDefaultSubobject区别 导入csv表格数据 创建一个object的C类 …

设计模式-责任链-笔记

动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;一个请求可能被多个对象处理&#xff0c;但是每个请求在运行时只能有个接受者&#xff0c;如果显示指定&#xff0c;将必不可少地带来请求者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…

视频剪辑方法:一键批量调整色调的高效技巧

在视频剪辑的过程中&#xff0c;色调调整是一项非常重要的工作。它能够改变影片的氛围、情感和视觉效果&#xff0c;更好地沉浸在影片的情境中。然而&#xff0c;对于许多视频剪辑师来说&#xff0c;批量调整色调是一项非常繁琐的任务&#xff0c;需要耗费大量的时间和精力。色…

Docker Desktop 配置阿里云镜像加速

阿里云搜索镜像&#xff0c;打开容器镜像服务&#xff0c;复制镜像加速器地址 Docker Desktop 右上角设置&#xff0c;选择 Docker Engine&#xff0c;在配置中添加阿里云的镜像地址&#xff0c;右下 Apply & restart 即可。 "registry-mirrors": ["https…

vmware workstation pro 17.5 安装 macos 13.5.2 虚拟机超详细图文教程

前言 本文很细&#xff0c;甚至有点墨迹&#xff0c;主要为了方便从来没用过 vmware 的新人&#xff0c;其实大部分步骤和正常安装虚拟机没有区别&#xff0c;详细贴图以方便大家对比细节 参考文章 感谢大佬们的无私分享 https://blog.csdn.net/qq_19731521/article/details…

idea中误删.iml和.idea文件,如何处理

目录 一、问题描述 二、解决方案 1、理论知识 &#xff08;1&#xff09;.iml 文件 &#xff08;2&#xff09;.idea文件 2、操作环境 3、操作步骤 &#xff08;1&#xff09;找到【Maven】工具按钮 &#xff08;2&#xff09;点图标&#xff0c;重复导入maven项目&am…

大批量合并识别成一个表或文档的方法

金鸣表格文字识别系统功能强大&#xff0c;其中可以将上百张图片或上百页PDF中的表格文字合并识别成一个表格或文档的功能尤其受到广大用户的欢迎&#xff0c;那应该怎么操作呢&#xff1f; 一、打开金鸣表格文字识别软件&#xff0c;点击左上角的“表格识别”&#xff0c;选择…