场景: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