指南:本文的首席执行官注释将介绍有关Django如何优化它的相关内容。我希望这对每个人都会有所帮助。让我们来看看。
在[django]管理员中的嵌入式优化时,引入了一些优化策略,在此添加。
当Django程序接收到get/post请求时,请求参数的数量超过了请求参数的数量,而不是data_upload_max_number_fields..如果请求参数的数量超过此值,则请求将其标识为恶意请求,并且该程序被抛出异常。该值的值为1000。如果Django程序中的管理员数量很大,则很容易超过此值。在此点,用户将无法完成数据上传。这次,您可以调整data_upload_max_number_fields,或制作data_upload_max_number_fields =无,并取消此异常检查。
顾名思义,Django-admin-inline-paginator插件可以在内联插入。这样,就不必一次加载太多数据,有效地避免了系统负担过多,并且是建议使用初学者。
??3
??0
几天前,老师要求我将Django Project(爬行动物网页)放在校园的内网上,但我想先用自己的服务器尝试一下。我刚刚在数字海洋上购买了一台服务器以运行SS脚本。通常,服务器始终没有用,因此请进行测试。
第一步并没有太多胡说八道,将Django文件通过WINSCP软件传递给服务器。
在服务器中安装Django所需的环境和我需要的第三方库。
完成上述步骤完成后,有必要执行一个步骤操作,这是我体验的一个坑。在Django文件目录中打开settings.py,然后将允许的_hosts = []更改为werse_hosts = [**“*”]。
打开“ anage.py位于服务器中”的目录,然后输入命令:
python3 manage.py runserver 0.0.0.0:8000
然后按Enter并输入浏览器:服务器IP地址:8000,伟大的成就!
注意力:
1. Python3不是特定的,它是根据您的Django项目所需的环境指定的。
2. 8000是可以修改的端口号。
如果您希望Django项目在关闭终端后运行和运行,则需要运行以下命令,NOHUP命令,命令casted Python3 Manage.py Runserver 0.0.0.0.0.0:8000。
在Django中开发Web应用程序的过程中,一个困难的问题是异步调度。例如,用户的时间很耗时。目前,处理的最佳方法是首先记录此操作的请求,首先响应该请求,然后在自由时进行计算,而不是让用户等待焦虑。
这种优化方法是典型的生产者+消息队列+消费者设计模式,而Django框架本身并未直接提供设计模式的实现。大多数教程使用第三方组件Clery+Redis来实现此计划。
不幸的是,芹菜和Redis都不支持窗户,我过去的开发环境仍然是Win10,因此我需要找到替代品。在调查后,我发现了一个很好的[Python分布式功能调度框架-Funboost]。它具有许多优势。对于Django开发,最大的亮点是根本不需要启动第三方服务,您可以意识到生产消费者设计模型。ESSENCEAPIP安装Funboost可以使用并使用它来打开框。sqlite文件以制作消息队列,足以处理小型应用程序开发。当然,您还可以使用高级消息(例如Kafka)来实现高可用性。
要说缺点,该组件的日志打印太尴尬了,也没有提供选项。控制台已被它刷。
首先发布原始导入数据代码:
48304BA5E6F9FE08F3FA1ABDA7D326AB.PNG
8
导入操作系统
os.environ.setDefault(“ django_settings_module”,“”),“”)
'''
当Django版本大于1.7时,您需要添加以下两个句子
导入django
django.setup()
否则,它将引发错误django.core.exceptions.AppRegitivenOtream:已加载模型。
'''
导入django
如果django.version =(1,7):#i i i i
django.setup()
从arears.models导入d072qf
导入xlrd #excel阅读工具
从DateTime导入DateTime
来自XLRD导入XLDATE_AS_TUPLE
导入时间
导入随机
time1 = time.time()
#data = xlrd.open_workbook('11 .xlsx')打开文件
用XLRD.OPEN_WORKBOOK('11 .xlsx')作为数据:
打印u“读取文件结束并开始导入!”
time2 = time.time()
table = data.sheet_by_index(0)#get the Worksheet
time3 = time.time()
n = 1
x = y = z = 0
工作列表= []
对于范围内的行(n,table.nrows):#nrows = table.nrows #ncols = table.ncols #column编号print sh.row_values(rownum)
行= table.row_values(line)
如果row:#view行值是否为空
因为我在[0,1,2,4,28,30,32]中:
如果type(row [i])== float:
行[i] = int(row [i])
如果d072qf.objects.filter(acct_month = row [0],service = row [1])。存在():#确定在数据库中是否重复该行的值。
x = x + 1 #repeat值计数
别的:
WorkList.Append(D072QF(acct_month = row [0],serv_id = row [1],acc_nbr = row [2],user_name = row [3],acct_code = row = row [4] ,,
acct_name =行[5],product_name =行[6],current_chaarge = row [7],one_charge = row [8],
tout_charge =行[9],三_charge=行[10],four_chaarge = row [11],fife five = row [12] ,,,,,,,,,
six_chaarge =行[13],七_chaarge =行[14],八_chaarge =行[15],nine_chaarge = row [16] ,,,,,,
ten_chaarge =行[17],eleven_chaarge =行[18],twelve_chaarge = row [19],oneyear_chaarge = row [20] ,,,,,,
theyear_chaarge =行[21],upthreeyear_chaarge =行[22],all_qf = row [23],morethree_qf = row [24],,
老化=行[25],service_name =行[26],mkt_chnl_name =行[27],mkt_chnl_id = row = row [28] ,,,,,,,
mkt_region_name =行[29],mkt_region_id =行[30],mkt_grid_name = row [31],mkt_grid_id = row [32] ,,,,,,,,
prop_addr =行[33]))))
y = y + 1 #non -duplicated计数
别的:
z = z + 1 #airline值计数
n = n + 1
如果n%9999 == 0:
d072qf.objects.bulk_create(工作列表)
工作列表= []
time.sleep(random.random())#let cpu rets随机0 = n 1.0 s
打印“成功介绍一次!”
打印“数据导入成功,导入”+str(y)+'bar,重复'+str(x)+'bar,带有'+str(z)+'
time4 = time.time()
打印“读取文件时间”+str(time2 time1)+“秒,导入数据时间耗尽”+str(time4 time3)+“第二!”
48304BA5E6F9FE08F3FA1ABDA7D326AB.PNG
目前,该代码尚未引入超过100,000行数据的数据库中。在将50,000行数据导入其中一个小时后,后者变得越来越慢。在Excel中阅读数据非常慢。一般而言,有几个原因影响进口速度:
1. XLRD始终介绍了XLS格式文件。如果文件有超过100,000行,则需要200秒才能读取文件。
2.代码中的这条句子也将影响速度。特别是,当数据库中的数据很大时:如果D072QF.Objects.filter(acct_month = row [0],service = row [1])。存在():#确定该行值在数据库中重复
3.如果字典一次添加了超过一万行数据,则它将无法对Windows的CPU遭受损失!因此,建议一次介绍10,000个数据,并清除列表
改进的代码:
优化零件:使用CSV格式;取消检查重复数据语句;每50,000导入数据
48304BA5E6F9FE08F3FA1ABDA7D326AB.PNG
#编码:UTF-8
导入操作系统
os.environ.setDefault(“ django_settings_module”,“”),“”)
'''
当Django版本大于1.7时,您需要添加以下两个句子
导入django
django.setup()
否则,它将引发错误django.core.exceptions.AppRegitivenOtream:已加载模型。
'''
导入django
如果django.version =(1,7):#i i i i
django.setup()
从arears.models导入d072qf
导入时间
导入随机
time1 = time.time()
f = open('11 .csv')
打印u“读取文件结束并开始导入!”
time2 = time.time()
工作列表= []
下一个(f)#将文件移至下一行
y = 0
n = 1
对于F中的行
row = line.replace('“','')#”替换词典中的“替换”
行= row.split(';')#press;切片
y = y + 1
WorkList.Append(D072QF(acct_month = row [0],serv_id = row [1],acc_nbr = row [2],user_name = row [3],acct_code = row = row [4] ,,
acct_name =行[5],product_name =行[6],current_chaarge = row [7],one_charge = row [8],
tout_charge =行[9],三_charge=行[10],four_chaarge = row [11],fife five = row [12] ,,,,,,,,,
six_chaarge =行[13],七_chaarge =行[14],八_chaarge =行[15],nine_chaarge = row [16] ,,,,,,
ten_chaarge =行[17],eleven_chaarge =行[18],twelve_chaarge = row [19],oneyear_chaarge = row [20] ,,,,,,
theyear_chaarge =行[21],upthreeyear_chaarge =行[22],all_qf = row [23],morethree_qf = row [24],,
老化=行[25],service_name =行[26],mkt_chnl_name =行[27],mkt_chnl_id = row = row [28] ,,,,,,,
mkt_region_name =行[29],mkt_region_id =行[30],mkt_grid_name = row [31],mkt_grid_id = row [32] ,,,,,,,,
prop_addr =行[33]))))
n = n + 1
如果n%50000 == 0:
打印n
d072qf.objects.bulk_create(工作列表)
工作列表= []
time3 = time.time()
打印“读取文件时间”+str(time2 time1)+“第二,导入数据时间耗费”+str(time3 time2)+“第二!”
time3 = time.time()
打印n
d072qf.objects.bulk_create(工作列表)
打印“读取文件时间”+str(time2 time1)+“第二,导入数据时间耗费”+str(time3 time2)+“第二!”
工作列表= []
打印“成功导入数据”+str(y)+“ bar”
f.close()
48304BA5E6F9FE08F3FA1ABDA7D326AB.PNG
结果令人惊讶!!!,仅花费73秒
48304BA5E6F9FE08F3FA1ABDA7D326AB.PNG
Python 2.7.10(默认,2015年5月23日,09:40:32)[MSC V.1500 32位(Intel)] Win32
键入“版权”,“信用”或“许可()”以获取更多信息。
======================================================
阅读文件后,开始导入!
50000
读取文件需要0.0秒,导入数据为34.327998302秒!
100000
读取文件需要0.0秒,导入数据为67.3599998951秒!
138400
读取文件需要0.0秒,导入数据为73.437999638秒!
成功的导入数据138399文章
手机卡住了以下方式可以缓解:
1)安装内存清洁软件,Android手机软件易于在后台设置操作存储器,这使手机存储不足以更改卡。您可以使用Tencent Mobile Butler来自动关闭背景程序。
2)还原工厂设置。经过很长时间,手机被用来缓存和安装越来越多的软件,这将不可避免地影响手机的运行速度。工厂设置可以在大约半年后恢复一次,这可以大大提高速度手机操作。
3)刷子,某些系统不是很有用,您可以通过闪烁来解决它!
1.在进行网站之前,必须选择服务器。服务器的稳定性可以帮助您的网站快速包括在内。如果其他人完全可以输入您的网站,那么就不想被包括在内。
2.本文必须是具有相对较高原创性的文章。一篇文章必须超过其伪 - 原始性的70%。
3.确保编写三个主要标签。其中,标题描述和关键字必须符合用户体验,并且必须与公司的品牌和公司的产品一致,以便可以更好地优化您的网站。
4.注册Baidu网站管理员平台,然后通过链接将每日文章提交给BAIDU网站管理员平台,以便百度蜘蛛可以有机会捕获网页,以便可以快速包含网站内容。
结论:以上是首席执行官注明给所有人的Django的所有内容。我希望这对每个人都会有所帮助。如果您仍然想了解有关此信息的更多信息,请记住收集并关注此网站。