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

邹城网站定制wordpress抓取新闻

邹城网站定制,wordpress抓取新闻,软件下载网页制作素材,网络平台推广服务以下代码实现了一个订单生成器#xff0c;使用 asyncio 和 aioredis 库实现了高并发地生成订单#xff0c;并将新增订单异步更新到数据库。具体实现流程如下#xff1a; 初始化 OrderGenerator 类。传入 Redis 服务器地址和并发数#xff0c;在初始化函数中设置并发数和一…以下代码实现了一个订单生成器使用 asyncio 和 aioredis 库实现了高并发地生成订单并将新增订单异步更新到数据库。具体实现流程如下 初始化 OrderGenerator 类。传入 Redis 服务器地址和并发数在初始化函数中设置并发数和一个订单队列用于存储新生成的订单数据。 定义 generate_order() 方法。该方法使用 Redis 的 WATCH、MULTI 和 EXEC 命令实现事务操作生成一个订单数据并将其添加到订单队列和 Redis 缓存中。如果生成订单的过程中监视到订单号已被修改则重试生成订单直到生成成功。 定义 update_database() 方法。该方法从订单队列中获取一个订单数据模拟将其异步更新到数据库的操作并将更新完成的订单标记为完成。 定义 generate_orders() 方法。该方法在循环中尝试连接 Redis 服务器如果连接成功则创建多个 generate_order() 协程任务和一个 update_database() 协程任务等待所有订单生成任务完成后等待订单队列中的所有任务完成然后取消 update_database() 协程任务并关闭 Redis 连接。如果连接失败则重试连接最多重试三次。 import time import random import asyncio import aioredisclass OrderGenerator:def __init__(self, redis_url, num_concurrent10):# 初始化函数传入 Redis 服务器地址和并发数self.redis_url redis_urlself.num_concurrent num_concurrent# 初始化订单队列用于存储新生成的订单数据self.order_queue asyncio.Queue()async def generate_order(self, redis):# 生成订单的协程任务async with redis.pipeline(transactionTrue) as pipe:while True:try:# 使用 WATCH 命令监视订单号是否被修改await pipe.watch(order_id)# 获取当前订单号并自增order_id await pipe.incr(order_id)# 使用 MULTI 命令开始一个事务pipe.multi()# 生成订单数据order_data {order_id: order_id,user_id: random.randint(1, 100),total_price: random.randint(100, 1000),create_time: time.strftime(%Y-%m-%d %H:%M:%S, time.localtime())}# 将订单添加到队列中await self.order_queue.put(order_data)# 将订单写入缓存await pipe.hmset(forder:{order_id}, order_data)# 使用 EXEC 命令提交事务await pipe.execute()breakexcept aioredis.WatchError:# 如果订单号被修改则重新尝试生成订单continueasync def update_database(self):# 将新生成的订单异步更新到数据库的协程任务while True:# 从订单队列中获取一个订单order_data await self.order_queue.get()# 模拟将订单异步更新到数据库的操作await asyncio.sleep(1)print(f订单 {order_data[order_id]} 已更新到数据库)# 标记订单队列中的任务完成self.order_queue.task_done()async def generate_orders(self):retries 0while retries 3:# 与 Redis 服务器建立连接redis await aioredis.Redis.from_url(self.redis_url)try:# 测试 Redis 服务器的可用性await redis.ping()# 创建并发数个生成订单的协程任务tasks [asyncio.create_task(self.generate_order(redis)) for i in range(self.num_concurrent)]# 创建一个将新订单更新到数据库的协程任务update_task asyncio.create_task(self.update_database())# 等待所有订单生成任务完成await asyncio.gather(*tasks)# 等待订单队列中的所有任务完成即新订单更新到数据库await self.order_queue.join()# 取消将新订单更新到数据库的协程任务update_task.cancel()# 关闭 Redis 连接redis.close()await redis.wait_closed()except (ConnectionError, TimeoutError):# 如果连接失败则重试retries 1print(fRedis server is not available ({retries} retries))redis.close()await redis.wait_closed()# 如果重试次数仍然失败则抛出异常raise ConnectionError(Redis server is not available)if __name__ __main__:# 实例化 OrderGenerator 类并运行生成订单的任务order_generator OrderGenerator(redis://localhost, num_concurrent10)asyncio.run(order_generator.generate_orders())
http://www.hkea.cn/news/14396482/

相关文章:

  • 此网站域名即将过期高端的食品行业网站开发
  • 河南鑫安胜通建设有限公司网站推广普通话主题班会
  • 温州网站建设公司有哪些视频图站主题 wordpress
  • 嘉兴专业做网站青岛网站建设企业建站
  • 网站建设的500字小结seo站点是什么意思
  • 做网站制作一般多少钱门户网站维护怎么做
  • 电商开店流程及费用企业网站seo怎么做
  • 让你的静态网站 做后台网站开发是什么意思
  • 网站开发技术及软件介绍哈尔滨城市建设局网站
  • 建设网站资料在哪收集网站视频你懂我意思吧app
  • 成都网站制作scgckj网络商城网站建设
  • 如何做电视剧的短视频网站网站建设周期规划
  • 晨光科技 网站建设seo外链怎么发
  • PHP做的网站能容纳多少人帝国cms做微网站
  • 上海高端网站公司中国著名外贸公司有哪些
  • 沙坪坝网站建设公司选哪家好seo网站优化对象
  • 哪建网站好网站网站设计的公司
  • 微信怎么建小网站网站域名可以更改吗
  • 怎样制作微信网站链接饲料网站源码
  • 制作免费网站的平台做电影方面的网站怎么做
  • php完整网站开发源码大连市住建局官方网
  • 零基础建网站嘉兴公司注册
  • 个人网站空间收费wordpress setup-config.php空白
  • 流行网站类型800元建网站
  • 个人网站备案经验企业网站建设开发成本利润多少
  • 做外贸网站需要请外贸文员吗网上做图赚钱的网站
  • 公司网站需要修改网页制作模板源码
  • 怎样做网站的关键词h5商城和小程序商城的区别
  • 网站建设资源分享wordpress点击创建配置文件没反应
  • 流量购买网站window2008r2网站建设