解决同时多个请求的处理问题,和定时任务

2023-11-18

 

 应用场景:

发布系统:让他晚上2点执行发布的一串任务  定时任务

更新访问量: 晚上2点定时将数据从redis更新到mysql中去

商城类的抢购工作:大批量的用户涌入,承载不了一次性处理这么多的活儿,用这个方式也可以

 

 

 

 

 

 目录结构

 

1.让woker运行

注意要pip install selery==3.1.1??

windos下如何启动

2.运行flask

3.创建任务

创建任务是立即创建成功的  对用户友好,意思是能马上看到我的任务被创建了 如下

 

 

 4.查看详情

(拿到随机字符串去检测是否成功)

 

终止功能的参数

 创建一个终止的功能

 

 

如何配置定时任务

 

代码:见老师的  01_celery(技术分享)

 

 目录结构

 

代码

celery.py   

from celery import Celery
from celery.schedules import crontab

cel = Celery(
    'tasks',
    broker='redis://127.0.0.1:6379',
    backend='redis://127.0.0.1:6379',
    include=['celery_tasks.s1','celery_tasks.s2']
)
View Code

 s1.py

from .celery import cel

@cel.task
def hello1(*args, **kwargs):
    return "hello1"
View Code

s2.py

from .celery import cel

@cel.task
def hello2(*args, **kwargs):
    return "hello2"
View Code

 

app.py  调用celery中的内容,处理请求

import datetime
from flask import Flask,request,render_template,redirect
from celery.result import AsyncResult
from celery_tasks.celery import cel
from celery_tasks.s1 import hello1


app = Flask(__name__)

TASK_LIST = [

]

@app.route('/index')
def index():
    """
    任务列表
    :return:
    """
    return render_template('index.html',tasks= TASK_LIST)

@app.route('/add_task',methods=['GET','POST'])
def add_task():
    if request.method == 'GET':
        return render_template('add_task.html')
    else:
        title = request.form.get('title')

        # 在celery中添加一个任务
        ctime = datetime.datetime.now()
        utc_ctime = datetime.datetime.utcfromtimestamp(ctime.timestamp())
        ctime_x = utc_ctime + datetime.timedelta(seconds=10)

        # 在celery中添加任务 执行一个定时任务,
        result = hello1.apply_async(args=[1, 3], eta=ctime_x)
        
        TASK_LIST.append({'id':result.id,'title':title})

        return redirect('/index')

@app.route('/status')
def status():
    #查看任务状态的功能
    id = request.args.get('id')
    # 根据id查看任务状态
    try:
        async = AsyncResult(id=id, app=cel)
        # async.revoke(terminate=True)  # 无论现在是什么时候,都要终止
        # async.revoke(terminate=False) # 如果任务还没有开始执行呢,那么就可以终止。
        if async.successful():
            result = async.get()
            return "执行完成,结果是:%s" %(result,)
            # async.forget() # 将结果删除
        elif async.failed():
            return '执行失败'
        elif async.status == 'PENDING':
            return '任务等待中被执行'
        elif async.status == 'RETRY':
            return '任务异常后正在重试'
        elif async.status == 'STARTED':
            return '任务已经开始被执行'
    except Exception as e:
        return "执行异常"

@app.route('/status')
def revoke():
    #终止功能
    id = request.args.get('id')
    # 根据id查看任务状态
    async = AsyncResult(id=id, app=cel)
    async.revoke(terminate=True)  # 无论现在是什么时候,都要终止
    return '已经终止'

if __name__ == '__main__':
    app.run()

 

转载于:https://www.cnblogs.com/wangkun122/p/9086829.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决同时多个请求的处理问题,和定时任务 的相关文章

  • python - 如何删除每行中的重复列表(pandas)?

    我的每一行中都包含一个列表 我想通过保留分数中的最高值来删除重复元素 这是我的数据框 df1 中的数据 pair score 0 A A 1 0000 1 A F 0 9990 2 A G 0 9985 3 A G 0 9975 4 A H
  • 如何打印前面有一定数量空格的整数?

    C has printf Xd Y 它只打印整数 X 并使其在控制台窗口上占据 Y 空格 例如 printf 3d 10 console 10 printf 5d 5 console 5 我如何在 python 3 中使用它 This pr
  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 创建 xyz 海拔数据的曲面图

    我正在尝试用 python 创建一座山的表面图 其中我有一些 xyz 数据 最终结果应该类似于that https i stack imgur com rKQV0 png 该文件的格式如下 616000 0 90500 0 3096 712
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 在多核上运行 python 线程

    我知道Python 2 7不允许在不同的内核上运行多个线程 你需要使用multiprocessing模块以实现某种程度的并发性 我正在看concurrent futuresPython 3 4 中的模块 是否使用ThreadPoolExec
  • 为什么我会收到 ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

    以下代码给出了值错误 major males for row in recent grads if recent grads Men gt recent grads Women major males append recent grads
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 使用 python 从 CSV 创建字典

    我有一个 CSV 格式的文件 其中 A B 和 C 是标题 我如何以Python方式将此CSV转换为以下形式的字典 A 1 B 4 C 7 A 2 B 5 C 8 A 3 B 6 C 9 到目前为止我正在尝试以下代码 import csv
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • 如何使用 python 模块的多个 git 分支?

    我想使用 git 来同时处理我正在编写的模块中的多个功能 我目前正在使用 SVN 只有一个工作区 因此我的 PYTHONPATH 上只有该工作区 我意识到这不太理想 所以我想知道是否有人可以建议一种更 正确 的方法来做到这一点 让我用一个假
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe

随机推荐

  • x-studio(Lua调试器,粒子编辑器,UI编辑器,代码编辑器,csb恢复工具)

    最新版本 x studio 10 0 9000 29 2020年4月14日更新 官网 https x studio net 官方教程 https docs x studio net x studio是一款强大的游戏开发IDE 由作者历时5年
  • 如何从零开始写小程序

    看了这篇文章 即使让我现在就从头写一个能够正常运行的小程序 也没有原本想象中的那么难了 在本文中 我们将会以一个具体的小程序为例 带领大家从零到一完成一个小程序的开发流程 并将这个小程序上传到 FinClip com 进行小程序提审与上架操
  • 信息收集之 绕过CDN获取真实IP地址

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 专栏简介 此文章已录入专栏 网络安全快速入门 CDN绕过 一 为什么要绕过CDN 二 如何识别CDN 1 nslookup解析
  • 多线程总结

  • Android 5.0 API新增和改进

    API 级别 21 Android 5 0 LOLLIPOP 为用户和应用开发者提供了新的功能 本文档介绍了最值得注意的新 API 有关新平台功能的扼要介绍 另请参阅 Android Lollipop 集锦 开始开发 要构建 Android
  • 硬件设计---了解电源篇

    1 概述 在高速电路设计中一块单板上常存在多种电源 3 3V 1 8V 1 2V 1 0V 0 9V 0 75V等 有时光是对FPGA供电就需要五六种电源 为了便于使用往往用户只需要提供一种或几种电源 然后经过板上电源模块转换到各个目标电源
  • 二、Docker安装及使用教程(Windows版)

    Docker安装及使用教程 Windows版 1 下载安装 2 启用windows Hyper V虚拟引擎 1 打开设置 2 搜索 启用或关闭 windows 功能 3 勾选Hyper V服务 4 根据提示重启电脑 等待更新即可 2 启动D
  • iOS 开发之 AutoLayout 自动布局

    iOS 开发之 AutoLayout 自动布局 frame 原点自身的尺寸 来确定自身的位置 autoLayout 根据参照视图的位置来定义自己的位置 autoLayout 约束视图和视图的关系来分配屏幕上的位置 使用VFL Visual
  • python计算机视觉KNN算法、稠密Dense-sift及图像手势识别

    KNN算法 一 KNN算法概述 1 kNN算法又称为k近邻分类 k nearest neighbor classification 算法 最简单平凡的分类器也许是那种死记硬背式的分类器 记住所有的训练数据 对于新的数据则直接和训练数据匹配
  • BigDecimal的使用

    在计算金额的时候 实际上整数 浮点数有时候有点捉襟见肘 于是math包提供了一个Bigdecimal类 所以可以学习一下这个BigDecimal的源码和使用 首先是看一下他的构造方法 看起来构建的方式很多 但实际上之间的差别很大 举个例子就
  • 计算机音乐花之舞谱,Flower Dance(花之舞)简谱 DJ OKAWARI 空灵、自然、唯美的花之舞,花儿舞了,我醉了。...

    DjOkawari 的作曲风格一向是空灵却又自然的 FlowerDance 作为广为人知的一首曲子非常完美的体现出来了他自己的风格 它将流行曲的跳跃激昂与古典乐曲的优美完美的结合在一起 给人最直观的感受便是它那种空灵的美感 你甚至可以想象到
  • 数学建模代码速成~赛前一个月~matlab~代码模板~吐血总结~三大模型代码(预测模型、优化模型、评价模型)

    目录 一 预测模型 1 BP神经网络预测 2 灰色预测 3 拟合插值预测 线性回归 4 时间序列预测 5 马尔科夫链预测 6 微分方程预测 7 Log
  • nacos安装配置

    1 下载 sentos安装 先下在安装包 nacos server 2 0 3 tar gz nacos官网 https nacos io zh cn 2 解压安装 上传安装包至linux系统 使用 tar zxvf nacos serve
  • 快速入门XPath语法,轻松解析爬虫时的HTML内容

    快速入门XPath语法 轻松解析爬虫时的HTML内容 爬虫时 很多网站返回的是HTML文件 可以用正则表达式 re库 或XPath语法来匹配目标内容 这两种方法属于爬虫的基本技能 实战中要会灵活运用 对于一些结构和内容复杂的HTML 用re
  • 通达信接口怎么样抓取股票实时数据?

    通达信接口怎么样抓取股票实时数据 股票爬取接口在股票交易中常常使用到的一些辅助工具 股票爬取接口主要是利用l1和l2接口来执行获取股票实时行情数据的原理 将自己需要查询的需求就可以在接口软件上搜索就可以很快的获取数据了 那么 在获取的过程中
  • 聊聊java高并发系统之异步非阻塞

    聊聊java高并发系统之异步非阻塞 几种调用方式 同步阻塞调用 即串行调用 响应时间为所有服务的响应时间总和 半异步 异步Future 线程池 异步Future 使用场景 并发请求多服务 总耗时为最长响应时间 提升总响应时间 但是阻塞主请求
  • 【点云格式互转】ply转bin、任意点云格式转ply

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 3D点云存储方式的种
  • 08_STM32的存储结构

    STM32的存储器结构 存储器是单片机结构的重要组成部分 存储器是用来存储编译好的程序代码和数据的 有了存储器单片机系统才具有记忆功能 按照存储介质的特性 可以分 易失性存储器 和 非易失性存储器 两类 易失性存储器断电后 里面存储的内容会
  • 802.11K/V/R协议介绍

    802 11K V R协议介绍 1 传统无线漫游介绍 1 1 什么是无线漫游 一台无线终端备 STA 通过连接Wi Fi获取上网体验 Wi Fi名称 又称为SSID 是由无线接入网 AP 提供的 因为一台AP设备的覆盖范围有限 所以无线网络
  • 解决同时多个请求的处理问题,和定时任务

    应用场景 发布系统 让他晚上2点执行发布的一串任务 定时任务 更新访问量 晚上2点定时将数据从redis更新到mysql中去 商城类的抢购工作 大批量的用户涌入 承载不了一次性处理这么多的活儿 用这个方式也可以 目录结构 1 让woker运