热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

application实现网页计数_Python3.7+Tornado5+Celery3+Rabbitmq3实现异步队列任务

原文转载自「刘悦的技术博客」https:v3u.cna_id_99在之前的一篇文章中提到了用DjangoCeleryRedis实现了异步任务队列,只不过消息中间件使用

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_99

在之前的一篇文章中提到了用Django+Celery+Redis实现了异步任务队列,只不过消息中间件使用了redis,redis作为消息中间件可谓是差强人意,功能和性能上都不如Rabbitmq,所以本次使用tornado框架结合celery,同时消息中间件使用Rabbitmq来实现异步发邮件,并且使用flower来监控任务队列。

首先安装rabbitmq

Mac os直接运行brew命令安装

#安装服务
brew install rabbitmq
#启动服务
brew services start rabbitmq

Win10系统就要下载安装包进行安装了,由于rabbitmq是基于erlang的,所以要首先安装erlang

1、首先,下载并运行Erlang for Windows 安装程序 (地址:http://www.erlang.org/downloads)下载完毕并安装(注意:安装目录请选择默认目录)

66f7d4b7f2fc4c97935736cbd4658441.png

2、下载 RabbitMQ,(地址:http://www.rabbitmq.com/download.html )(注意:安装目录请选择默认目录)

748f0d9d1be19de7fa870bd4ce7a00f8.png

安装成功后,启用web管理UI,进入RabbitMQ Serverrabbitmq_server-3.6.6sbin,输入命令rabbitmq-plugins enable rabbitmq_management

在系统的开始菜单里找到RabbitMQ的启动菜单,启动服务

浏览器输入,http://localhost:15672/,使用默认用户guest/guest进入网页端控制台:

b575363812150a674a1460760ebbb267.png

代表没有问题了

然后安装tornado和celery,注意指定版本号

pip3 install tornado==5.1.1
pip3 install celery ==3.1
pip3 install pika ==0.9.14
pip3 install tornado-celery
pip3 install flower

需要注意一点,由于python3.7中async已经作为关键字存在,但是有的三方库还没有及时修正,导致它们自己声明的变量和系统关键字重名,所以我们要深入三方库的源码,帮他们修改async关键字为async_my,需要修改的文件夹和文件包含但不限于:

/site-packages/pika/adapters/libev_connection.py

/site-packages/celery下面的文件

/site-packages/kombu下面的文件夹

在tornado项目下新建一个任务队列文件task.py:

import time
from celery import Celery
from func_tool import mailC_FORCE_ROOT=Truecelery = Celery("tasks", broker="amqp://guest:guest@localhost:5672")
celery.conf.CELERY_RESULT_BACKEND = "amqp"@celery.task
def sleep(seconds):time.sleep(float(seconds))return seconds@celery.task
def sendmail(title,text,tomail):mail(title,text,tomail)return '发送邮件成功'if __name__ == "__main__":celery.start()

然后编写服务端代码:

from celery import Celery
from tornado import gen
import tcelery
sys.path.append("..")
import task#异步任务
class CeleryHandler(BaseHandler):@gen.coroutinedef get(self):response = yield gen.Task(task.sendmail.apply_async,args=['你好','非常好','164850527@qq.com'])self.write('ok')self.finish()

路由器代码:

import tornado.web
from views import Index
import config#路由 class Application(tornado.web.Application):def __init__(self):handlers = [(r"/celery", Index.CeleryHandler)]super(Application,self).__init__(handlers,**config.setting)

程序入口代码server.py:

import tornado.ioloop
import tornado.httpserver
import configfrom application import Applicationif __name__ == "__main__":print('启动...')app = Application()httpServer = tornado.httpserver.HTTPServer(app)# httpServer.listen(8888)#绑定端口httpServer.bind(config.options['port'])#开启5个子进程(默认1,若为None或者小于0,开启对应硬件的CPU核心数个子进程)httpServer.start(1)tornado.ioloop.IOLoop.current().start()

进入项目目录,分别启动tornado服务,celery服务,以及flower服务

python server.py
celery -A task worker --loglevel=info
celery flower -A task --broker=amqp://guest:guest@localhost:5672//

访问网址http://localhost:8000/celery 用来触发异步任务

后台服务显示任务返回值:

2fa7d017f12a43bb206317086d7e48d9.png

进入flower在线任务监控网址:http://localhost:5555/

84f27ea59dfee550ae9608f027564c01.png

至此,整个流程就走完了。

原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_99



推荐阅读
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 在Windows环境下安装Python的dlib和cv2库时,首先需要安装Boost和CMake。由于CMake依赖于C编译器,因此建议安装Visual Studio,推荐版本为VS2015及以上。此外,确保CMake已正确配置到系统环境变量中,以便顺利编译dlib。安装过程中还需注意Python的版本兼容性,以避免潜在的错误。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
author-avatar
兰州老头_337
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有