flask+celery+redis实现异步响应

本文介绍了如何利用flask、celery和redis来构建一个异步响应服务,以解决调用Python核心算法时的长计算时间问题。通过java发送消息,服务解析消息体参数,启动长时间运行的函数,并返回包含状态查询URL的消息给java,从而让java能够通过该URL获取任务执行状态。
摘要由CSDN通过智能技术生成

场景:java调研python核心算法,之前直接使用cmd的方式直接调用py文件,现在因计算时间较长需要搭建响应服务
网上参考了flask+celery+redis的实现方式,实现响应java的消息并识别消息体里面的参数,调用长时间运行的函数并理解返回消息给java(消息体内包含获取状态的url);后续java可根据这个url来或者任务的执行状态。

完整app.py如下

# -*- coding: utf-8 -*-
from flask import Flask, jsonify, url_for,request
from celery import Celery
from celery.schedules import crontab
import time
import random

from py.longTaskCal import longtaskmain


app = Flask(__name__)
# 单独配置方式
# app.config['CELERY_BROKER_URL'] = "redis://localhost:6379/0"
# app.config['CELERY_RESULT_BACKEND'] = "redis://localhost:6379/0"
# 批量配置方式
app.config.update(
    CELERY_BROKER_URL = "redis://192.168.1.2:6379/9",
    CELERY_RESULT_BACKEND = 'redis://192.168.1.2:6379/9',
    CELERYBEAT_SCHEDULE = {
   
        'add-every-minute': {
   
        'task': 'app.scheduled_task',
        'schedule': crontab(minute='*'),
        }
    },
    CELERY_TIMEZONE='Asia/Shanghai'
)


# Celery configuration
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值