python中使用flask,有一个页面是使用xlrd解析一个8万条excel的数据超时,有什么办法不超时?
代码如下
@app.route('/import')
def import_xlsx():
# 连接数据库
conn = pymysql.connect(host='192.168.10.2', port=3306, user='project', passwd='123456',
db='project') # db:库名
# 使用cursor()方法获取操作游标
cursor = conn.cursor()
cursor.execute("truncate table project_info")
conn.commit()
cursor.execute("select * from project_attach_files where type=1");
result_one = cursor.fetchone()
print("导入文件")
print(result_one[2])
try:
ExcelFile = xlrd.open_workbook(r'.' + result_one[2])
except Exception as e:
print(e)
# print(ExcelFile.sheet_names())
sheet = ExcelFile.sheet_by_index(0)
# print(sheet.nrows)
print(sheet.nrows);
cursor.execute("update project_attach_files set rows=" + str(sheet.nrows) + " where type=1");
conn.commit()
for i in range(sheet.nrows):
# print(sheet.row_values(i))
data = sheet.row_values(i)
# print(i)
# print(data[1])
# 从第四行开始读取
if (i >= 5):
# sql_insert = 'insert into project_info(data_15,data_103,data_106) values(%s,%s,%s)',(data[4],data[6],data[7])
# print(sql_insert)
# 建设类型是"新建"丶主动规划的取交付验收时间 其他的取内验完成时间
if data[14] == '新建' or data[14] == '主动规划':
data[133] = data[136]
# 投资总计(元) 兼容没有金额的情况
if (data[102] == ''):
data[102] = 0
# 项目名称
if (data[106] == ''):
data[106] = ""
# 项目编码
if (data[107] == ''):
data[107] = ""
# 设计投资金额
if (data[102] == ''):
data[102] = 0
# 内部验收结束时间
if (data[134] == ''):
data[134] = '1970-01-01'
# 项目转资投资合计
if (data[150] == ''):
data[150] = '0'
# 项目状态
if (data[164] == ''):
data[164] = ""
# data_15 建设方式 14
# data_103 投资总计 102
# data_106 项目名称 106
# data_108 项目编码 107
# data_114 设计投资金额(元) 102
# data_134 内部验收结束时间 134
# data_150 项目转资投资合计 150
# data_170 项目状态 164
sql = '''insert into project_info(data_15,data_103,data_106,data_108,data_114,data_134,data_150,data_170) values("%s","%s","%s","%s","%s","%s","%s","%s")''' % (
data[14], data[102], data[105], data[107], data[102], data[134], data[150], data[164])
cursor.execute(sql)
conn.commit()
return render_template('index.html', result_one=result_one[2])
希望大佬给个处理的思路或者解决不超时的办法而可以顺利解析,谢谢
你说的超时应该是指http超过,一种是在你的http服务器设置延长http超时的时间,另一种是把import_xlsx做为异请求,开了个子进程去处理