Commit 9f5b6c0d authored by wang zhengwei's avatar wang zhengwei

使用celery 替代子进程

parent c28c8f6d
......@@ -17,7 +17,7 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy.pool import NullPool
env = sys.argv[-1]
env = sys.argv[-1] if sys.argv[-1] in ["dev", "test", "prod"] else "test"
work_dir = os.getcwd()
CFG_FILEPATH = work_dir + '/app/config/config.yaml'
......@@ -95,6 +95,11 @@ redis = redis.StrictRedis(
password=config[env]['redis']['password']
)
redis_host=config[env]['redis']['host'],
redis_port=config[env]['redis']['port'],
redis_db=config[env]['redis']['db'],
redis_password=config[env]['redis']['password']
logging.basicConfig(level=logging.INFO,
filename=work_dir + config[env]['log']['filename'],
filemode=config[env]['log']['filemode'],
......
from celery import Celery
from sqlalchemy import and_, or_
from app.api.engine import TAMP_SQL, tamp_diagnose_app_engine, template_folder, temp_img_save_folder, \
redis_host, redis_port, redis_db, redis_password
from app.model.tamp_diagnose_app import HoldReport, HoldDiagnoseReport, PeriodicReport, Customer, ReportView
from app.utils.jinjia2html_v2 import DataIntegrate
celery_app = Celery(__name__)
celery_conf = "redis://:{}@{}:{}/{}".format("qimeng123","118.190.63.109","56379","1")
celery_app.conf.update({"broker_url": celery_conf, "result_backend": celery_conf})
@celery_app.task
def save_pdf(ifa_id, customer_id, pdf_name, type, report_data):
"""
加法
:param x:
:param y:
:return:
"""
try:
dt = DataIntegrate(ifa_id=ifa_id, customer_id=customer_id, pdf_name=pdf_name, type=type)
dt.render_data(data=report_data)
except:
pass
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_session = tamp_diagnose_app.session
if type == 1:
res = tamp_diagnose_session.query(HoldReport).filter(and_(
HoldReport.id == id,
HoldReport.ifa_id == ifa_id,
))
elif type == 2:
res = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
HoldDiagnoseReport.id == id,
HoldDiagnoseReport.ifa_id == ifa_id,
))
elif type == 3:
res = tamp_diagnose_session.query(PeriodicReport).filter(and_(
PeriodicReport.id == id,
PeriodicReport.ifa_id == ifa_id,
))
else:
return False
res.update({
'file': pdf_name,
'update_status': 2,
'update_time': datetime.datetime.now()
})
return True
......@@ -17,6 +17,7 @@ from sqlalchemy import and_, or_
from app.api.engine import TAMP_SQL, tamp_diagnose_app_engine, template_folder, temp_img_save_folder
from app.model.tamp_diagnose_app import HoldReport, HoldDiagnoseReport, PeriodicReport, Customer, ReportView
from app.utils.jinjia2html_v2 import DataIntegrate
from app.celery import save_pdf
def get_report_list(args):
......@@ -138,68 +139,43 @@ def edit_report(args):
return False
r = res.update({
'report_data': report_data,
'update_status': 1,
'update_time': datetime.datetime.now()
})
pid = os.fork()
if pid == 0:
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_session = tamp_diagnose_app.session
hold_report = tamp_diagnose_session.query(HoldReport).filter(and_(
HoldReport.id == id,
HoldReport.ifa_id == ifa_id,
))
hold_diagnose_report = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
HoldDiagnoseReport.id == id,
HoldDiagnoseReport.ifa_id == ifa_id,
))
periodic_report = tamp_diagnose_session.query(PeriodicReport).filter(and_(
PeriodicReport.id == id,
PeriodicReport.ifa_id == ifa_id,
))
if type == 1:
res = hold_report
elif type == 2:
res = hold_diagnose_report
elif type == 3:
res = periodic_report
if not res:
return False
res.update({
'update_status': 1,
'update_time': datetime.datetime.now()
})
try:
dt = DataIntegrate(ifa_id=ifa_id, customer_id=res[0].customer_id, pdf_name=pdf_name, type=type)
dt.render_data(data=json.loads(report_data.replace(template_folder, temp_img_save_folder)))
except:
pass
with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
tamp_diagnose_session = tamp_diagnose_app.session
hold_report = tamp_diagnose_session.query(HoldReport).filter(and_(
HoldReport.id == id,
HoldReport.ifa_id == ifa_id,
))
hold_diagnose_report = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
HoldDiagnoseReport.id == id,
HoldDiagnoseReport.ifa_id == ifa_id,
))
periodic_report = tamp_diagnose_session.query(PeriodicReport).filter(and_(
PeriodicReport.id == id,
PeriodicReport.ifa_id == ifa_id,
))
if type == 1:
res = hold_report
elif type == 2:
res = hold_diagnose_report
elif type == 3:
res = periodic_report
if not res:
return False
res.update({
'file': pdf_name,
'update_status': 2,
'update_time': datetime.datetime.now()
})
save_pdf.delay(ifa_id, customer_id, pdf_name, type, report_data)
# try:
# dt = DataIntegrate(ifa_id=ifa_id, customer_id=res[0].customer_id, pdf_name=pdf_name, type=type)
# dt.render_data(data=json.loads(report_data.replace(template_folder, temp_img_save_folder)))
# except:
# pass
# with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
# tamp_diagnose_session = tamp_diagnose_app.session
# hold_report = tamp_diagnose_session.query(HoldReport).filter(and_(
# HoldReport.id == id,
# HoldReport.ifa_id == ifa_id,
# ))
# hold_diagnose_report = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
# HoldDiagnoseReport.id == id,
# HoldDiagnoseReport.ifa_id == ifa_id,
# ))
# periodic_report = tamp_diagnose_session.query(PeriodicReport).filter(and_(
# PeriodicReport.id == id,
# PeriodicReport.ifa_id == ifa_id,
# ))
# if type == 1:
# res = hold_report
# elif type == 2:
# res = hold_diagnose_report
# elif type == 3:
# res = periodic_report
# if not res:
# return False
# res.update({
# 'file': pdf_name,
# 'update_status': 2,
# 'update_time': datetime.datetime.now()
# })
return True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment