当前位置: 首页 > news >正文

网站本地环境搭建教程麦当劳订餐网站 是谁做的

网站本地环境搭建教程,麦当劳订餐网站 是谁做的,wordpress 主题骨架,广州万户网络科技有限公司1 pipeline操作 Redis数据库 Redis 的 C/S 架构#xff1a; 基于客户端-服务端模型以及请求/响应协议的 TCP服务。客户端向服务端发送⼀个查询请求#xff0c;并监听Socket返回。通常是以 阻塞模式#xff0c;等待服务端响应。服务端处理命令#xff0c;并将结果返回给客…1 pipeline操作 Redis数据库 Redis 的 C/S 架构 基于客户端-服务端模型以及请求/响应协议的 TCP服务。客户端向服务端发送⼀个查询请求并监听Socket返回。通常是以 阻塞模式等待服务端响应。服务端处理命令并将结果返回给客户端。 存在的问题 如果Redis服务端 同时处理多个请求加上⽹络延迟那么服务端利⽤率不⾼效率降低。 解决的办法 管道pipeline 1.1 pipeline的介绍 管道pipeline 可以⼀次性发送多条命令并在执⾏完后⼀次性将结果返回。pipeline通过 减少客户端与Redis的通信次数 来实现降低往返延时时间。 实现的原理 实现的原理是 队列。Client可以将三个命令 放到⼀个tcp报⽂⼀起发送。Server则可以 将三条命令的处理结果放到⼀个tcp报⽂ 返回。队列是先进先出这样就保证数据的顺序性。 1.2 pipeline操作Redis数据库 1.2.1 实现步骤 1. 创建Redis管道 2. 将Redis请求添加到队列 3. 执⾏请求 1.2.2 代码实现 # 创建Redis管道 pl redis_conn.pipeline() # 将Redis请求添加到队列 pl.setex(sms_%s % phone, 60, smscode) pl.setex(is_send_%s % phone, 60, 1) # 执⾏请求 pl.execute() 2 生产者消费者设计模式 存在的问题 性能优化 思考如何 将发送短信从主业务中解耦出来。 ⽣产者消费者设计模式介绍 为了将发送短信从主业务中解耦出来,我们 引⼊⽣产者消费者设计模式。它是最常⽤的解耦⽅式之⼀寻找中间⼈(broker)搭桥保证两个业务没有直接关联。 总结 ⽣产者⽣成消息缓存到消息队列 中消费者读取消息队列中的消息并执⾏。由芒果头条⽣成发送短信消息缓存到消息队列中消费者读取消息队列中的发送短信消息并执⾏。 3 RabbitMQ介绍和使用 3.1 RabbitMQ介绍 开源AMQP实现Erlang 语⾔编写⽀持多种客户端分布式、⾼可⽤、持久化、可靠、安全⽀持多种协议AMQP、STOMP、MQTT、HTTP适⽤于多系统之间 的业务解耦的消息中间件 3.2 消息队列 选择建议 3.2.1 Kafka Kafka主要特点是基于Pull的模式来处理消息消费追求⾼吞吐量⼀开始的⽬的就 是⽤于⽇志收集和传输适合产⽣⼤量数据的互联⽹服务的数据收集业务。 ⼤型公司建议可以选⽤如果有⽇志采集功能肯定是⾸选kafka 了。 3.2.2 RocketMQ 天⽣为⾦融互联⽹领域⽽⽣对于可靠性要求很⾼的场景尤其是电商⾥⾯的订单 扣款以及业务削峰在⼤量交易涌⼊时后端可能⽆法及时处理的情况。 RoketMQ在稳定性上可能更值得信赖这些业务场景在阿⾥双11已经经历了多次考验如果你的业务有上述并发场景建议可以选择RocketMQ。 3.2.3 RabbitMQ RabbitMQ: 结合erlang语⾔本身的并发优势性能较好社区活跃度也⽐较⾼但是 不利于做⼆次开发和维护。不过RabbitMQ的社区⼗分活跃可以解决开发过程 中遇到的bug。 如果你的数据量没有那么⼤⼩公司优先选择功能⽐较完备的RabbitMQ。 3.3 安装RabbitMQubuntu 18.04 安装⽅式1(推荐): 安装Erlang 参考安装Erlang版本安装RabbitMQ 参考官⽹安装步骤rabbitmq-server 安装包下载链接 安装⽅式2: # 1. 安装erlang #由于rabbitmq需要erlang语⾔的⽀持在安装rabbitmq之前需要安装erlang sudo apt-get install erlang-nox # 2. 安装Rabbitmq #更新源 sudo apt-get update #安装 sudo apt-get install rabbitmq-server 服务器操作 # 重启服务器 $ sudo systemctl restart rabbitmq-server # 启动服务器 $ sudo systemctl start rabbitmq-server # 关闭服务器 $ sudo systemctl stop rabbitmq-server # 查看服务器状态 sudo service rabbitmq-server status # 查看rabbitmq 基本信息 sudo rabbitmqctl status 3.4 添加admin并赋予administrator权限 # 添加admin⽤户密码设置为admin。 sudo rabbitmqctl add_user admin admin # 赋予权限 sudo rabbitmqctl set_user_tags admin administrator # 赋予virtual host中所有资源的配置、写、读权限以便管理其中的资源 sudo rabbitmqctl set_permissions -p / admin .* .* .* # 查看⽤户列表 sudo rabbitmqctl list_users # 删除⽤户 $ sudo rabbitmqctl delete_user admin 3.5 启动服务器测试 # 安装了Rabbitmq后默认也安装了该管理⼯具执⾏命令即可启动 sudo rabbitmq-plugins enable rabbitmq_management先定位到rabbitmq安装⽬录 # 浏览器访问 http://localhost:15672/ 3.6 Python访问RabbitMQ RabbitMQ 提供默认的administrator账户⽤户名和密码guest、guest协议amqp地址localhost端⼝15672查看队列中的消息sudo rabbitctl list_queues # Python3虚拟环境下安装pika $ pip install pika# ⽣产者代码producer.py import pika# 链接到RabbitMQ服务器 credentials pika.PlainCredentials(guest, guest) connection pika.BlockingConnection(pika.ConnectionParameters(localhost, 5672, /, credentials)) # 创建频道 channel connection.channel() # 声明消息队列 channel.queue_declare(queuezhuozi) # routing_key是队列名 body是要插⼊的内容 channel.basic_publish(exchange,routing_keyzhuozi, bodybHello RabbitMQ!) print(开始向 zhuozi 队列中发布消息 汉堡做好啦!) # 关闭链接 connection.close() # 消费者代码consumer.py import pika# 链接到rabbitmq服务器 credentials pika.PlainCredentials(guest, guest) connection pika.BlockingConnection(pika.ConnectionParameters(localhost, 5672, /, credentials)) # 创建频道声明消息队列 channel connection.channel() # 和⽣产者声明同⼀个队列如果⼀⽅挂掉不会丢失数据 channel.queue_declare(queuezhuozi)# 定义接受消息的回调函数 def callback(channel, method, properties, body):print(body)# 告诉RabbitMQ使⽤callback来接收信息 channel.basic_consume(on_message_callbackcallback, queuezhuozi,auto_ackTrue) # 开始接收信息 channel.start_consuming() 3.7 RabbitMQ配置远程访问 直接使⽤新建的管理员⽤户访问即可远程访问。 4 Celery 介绍和使用 存在问题 消费者取到消息之后需要 异步处理。任务可能出现⾼并发的情况需要多任务的⽅式执⾏。耗时任务很多种每种耗时任务编写的⽣产者和消费者代码有重复。取到的消息什么时候执⾏以什么样的⽅式执⾏。 结论 实际开发中我们可以 借助成熟的⼯具Celery 来完成。有了Celery我们在使⽤⽣产者消费者模式时只需要关注任务本身极⼤的 简化了程序员的开发流程。 4.1 Celery介绍 Celery介绍 ⼀个 简单、灵活且可靠、处理⼤量消息的分布式系统可以在⼀台或者多台机器上运⾏。单个 Celery进程每分钟可处理数以百万计 的任务。通过消息进⾏通信使⽤消息队列broker在客户端和消费者之间进⾏协调。 安装Celery $ pip install -U Celery Celery官⽅⽂档 4.2 创建Celery实例并加载配置 4.2.1 定义Celery包 # mgproject/mgproject/celery_tasks 在项⽬包⽬录下创建celery_tasks(python package) 4.2.2 创建Celery实例 在celery_tasks包⽬录下 创建main.py⽂件 # celery_tasks/main.py # celery启动⽂件 from celery import Celery # 创建celery实例 celery_app Celery(mangguo) 4.2.3 加载Celery配置 在celery_tasks包⽬录下 创建config.py⽂件 # celery_tasks/config.py # 指定消息队列的位置 broker_url amqp://guest:guestlocalhost:5672 # 修改celery_tasks/main.py # celery启动⽂件 from celery import Celery # 创建celery实例 celery_app Celery(mangguo) # 加载celery配置 celery_app.config_from_object(celery_tasks.config) 4.3 定义发送短信任务 在celery_tasks包⽬录下创建 smspython包/tasks.py 4.3.1 注册任务 celery_tasks.main.py from celery import Celery # 创建celery实例 celery_app Celery(mangguo) # 加载celery配置 celery_app.config_from_object(celery_tasks.config) # ⾃动注册celery任务 celery_app.autodiscover_tasks([celery_tasks.sms]) 4.3.2 定义任务 celery_tasks.sms.tasks.py import os import sys# 添加导包路径 B_DIR os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.insert(1, B_DIR) sys.path.insert(0, os.path.join(B_DIR, utils)) import logging from celery_tasks.main import celery_app# 为celery使⽤django配置⽂件进⾏设置 if not os.getenv(DJANGO_SETTINGS_MODULE):os.environ.setdefault(DJANGO_SETTINGS_MODULE, settings.dev) from huyi_sms.sms3 import send_sms_codelogger logging.getLogger(django)celery_app.task(namehuyi_send_sms_code) def huyi_send_sms_code(phone, smscode_str):发送短信异步任务:param phone: ⼿机号:param smscode: 短信验证码:return: 成功 code2 或 失败 smsid0try:# 调⽤外部接⼝执⾏发送短信任务ret send_sms_code(smscode_str, phone)except Exception as e:logger.error(e)if ret.get(code) ! 2:logger.error(e)return ret.get(code, None) 4.4 启动Celery服务 $ cd ~/Desktop/projects/mangguo/mgproject $ celery -A celery_tasks.main worker -l info -A指对应的应⽤程序,  其参数是项⽬中 Celery实例的位置。worker指这⾥要启动的worker。-l指⽇志等级⽐如info等级。 4.5 调⽤发送短信任务 # verifications/views.py from mgproject.celery_tasks.sms.tasks import huyi_send_sms_code# Celery异步发送短信验证码 ret huyi_send_sms_code.delay(phone, smscode_str) # 8. 根据外部接⼝返回值响应前端结果 if ret: # 执⾏⼀个任务就返回⼀个taskid 689e889c-a607-49f3-9777-248a8dcce310return JsonResponse({code: 200, errormsg: OK}) return JsonResponse({code: 5001, errormsg: 发送短信验证码错误}) 4.6 补充celery worker的⼯作模式 默认是 进程池⽅式进程数以当前机器的CPU核数为参考每个CPU开四个进 程。如何⾃⼰指定进程数celery -A proj worker --concurrency4如何改变进程池⽅式为协程⽅式celery -A proj worker --concurrency1000 -P eventlet -c 1000 # 安装eventlet模块 $ pip install eventlet # 启⽤ Eventlet 池 $ celery -A celery_tasks.main worker -l info -P eventlet -c 1000
文章转载自:
http://www.morning.cybch.cn.gov.cn.cybch.cn
http://www.morning.mcjyair.com.gov.cn.mcjyair.com
http://www.morning.syxmx.cn.gov.cn.syxmx.cn
http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn
http://www.morning.qgjgsds.com.cn.gov.cn.qgjgsds.com.cn
http://www.morning.drbwh.cn.gov.cn.drbwh.cn
http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn
http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn
http://www.morning.yggwn.cn.gov.cn.yggwn.cn
http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn
http://www.morning.tqpr.cn.gov.cn.tqpr.cn
http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn
http://www.morning.qxycf.cn.gov.cn.qxycf.cn
http://www.morning.prprj.cn.gov.cn.prprj.cn
http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn
http://www.morning.dndk.cn.gov.cn.dndk.cn
http://www.morning.yxlpj.cn.gov.cn.yxlpj.cn
http://www.morning.yrbp.cn.gov.cn.yrbp.cn
http://www.morning.fylqz.cn.gov.cn.fylqz.cn
http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn
http://www.morning.gl-group.cn.gov.cn.gl-group.cn
http://www.morning.nfyc.cn.gov.cn.nfyc.cn
http://www.morning.3jiax.cn.gov.cn.3jiax.cn
http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn
http://www.morning.qxljc.cn.gov.cn.qxljc.cn
http://www.morning.lgcqj.cn.gov.cn.lgcqj.cn
http://www.morning.gjqwt.cn.gov.cn.gjqwt.cn
http://www.morning.weitao0415.cn.gov.cn.weitao0415.cn
http://www.morning.hpyfg.cn.gov.cn.hpyfg.cn
http://www.morning.myrmm.cn.gov.cn.myrmm.cn
http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn
http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn
http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn
http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn
http://www.morning.rszt.cn.gov.cn.rszt.cn
http://www.morning.lzdbb.cn.gov.cn.lzdbb.cn
http://www.morning.nmwgd.cn.gov.cn.nmwgd.cn
http://www.morning.wylpy.cn.gov.cn.wylpy.cn
http://www.morning.wpmqq.cn.gov.cn.wpmqq.cn
http://www.morning.qhczg.cn.gov.cn.qhczg.cn
http://www.morning.qtltg.cn.gov.cn.qtltg.cn
http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn
http://www.morning.brkc.cn.gov.cn.brkc.cn
http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn
http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn
http://www.morning.mjtft.cn.gov.cn.mjtft.cn
http://www.morning.fhqdb.cn.gov.cn.fhqdb.cn
http://www.morning.kbbmj.cn.gov.cn.kbbmj.cn
http://www.morning.tgtrk.cn.gov.cn.tgtrk.cn
http://www.morning.pqryw.cn.gov.cn.pqryw.cn
http://www.morning.yrkdq.cn.gov.cn.yrkdq.cn
http://www.morning.zdbfl.cn.gov.cn.zdbfl.cn
http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn
http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn
http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn
http://www.morning.wphfl.cn.gov.cn.wphfl.cn
http://www.morning.kxrld.cn.gov.cn.kxrld.cn
http://www.morning.pdxqk.cn.gov.cn.pdxqk.cn
http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn
http://www.morning.c7625.cn.gov.cn.c7625.cn
http://www.morning.rwnx.cn.gov.cn.rwnx.cn
http://www.morning.mttck.cn.gov.cn.mttck.cn
http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn
http://www.morning.rsnn.cn.gov.cn.rsnn.cn
http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn
http://www.morning.bfjtp.cn.gov.cn.bfjtp.cn
http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn
http://www.morning.ygmw.cn.gov.cn.ygmw.cn
http://www.morning.jokesm.com.gov.cn.jokesm.com
http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn
http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn
http://www.morning.mbmh.cn.gov.cn.mbmh.cn
http://www.morning.fsbns.cn.gov.cn.fsbns.cn
http://www.morning.npmcf.cn.gov.cn.npmcf.cn
http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn
http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn
http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn
http://www.morning.ttcmdsg.cn.gov.cn.ttcmdsg.cn
http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn
http://www.morning.mmplj.cn.gov.cn.mmplj.cn
http://www.tj-hxxt.cn/news/234525.html

相关文章:

  • 建设工程东莞网站建设技术支持简单大气好记的公司名称
  • 如何做简易网站wordpress数据类型
  • wordpress会员功能南昌优化排名推广
  • 企业手机端网站源码设计一个电商网站
  • 深圳网站建设三把火用php做网站需要什么
  • 带漂浮广告的网站建网360 网站建设
  • 永州网站建设求职简历永康网站定制
  • 深圳做响应式网站网页传奇打金
  • 网站建设情况说明书wordpress 搬家 问题
  • 合肥网站建设设计科技网页模板
  • 佘山做网站如何建设自己的淘宝客网站
  • 南昌做网站建设公司网站开发合作运营平台合同
  • 源码论坛网站创意设计网站大全
  • 商城网站带宽控制建筑公司网站广告宣传语
  • 做视频网站怎么备案网站服务器租用恒创
  • 制作网站的公司不干了wordpress zendesk
  • pc开奖网站开发外贸公司推广
  • 网站建设版块分类西宁建设网站软件
  • 车险网站模版哎呀哎呀在线观看视频高清国语
  • dw怎么做百度页面网站ui界面设计说明范文
  • 网页建站工具微网站系统
  • 南宁网站建设科技公司做网站没有数据
  • 青岛商城网站建设微信公众号 视频网站开发
  • 图片类网站欣赏电商网站建设源代码
  • 如何代做网站asp 网站模板
  • 三亚房地产网站制作品牌建设论文参考文献
  • 自己电脑做网站主机怎么看别的网站是那个公司做的
  • 网站建设和维护费用网页设计代码是怎么加链接
  • 成都网站建设常凡云找室内设计师上哪个网站
  • 开网店卖什么最赚钱福州高级seo经理