确认账号密码和端口没问题后,问题同事配置有没验证过,他说直接从网上cv的,完全没经过验证。坑啊!!!
把生产的配置和测试配置比较好,修改了几个地方
信心满满,重启启动 django shell 测试,结果还是连接上不!这时候心情开始有点糟糕~
冷静, django shell 不行,那用 python shell 直连试试?
一点毛病都没有,直接连上了!
一脸懵逼,这到底是啥问题啊!
结果依然是连接不上。
不知不觉已经到了晚上九点,好累,不想卷了。下班回家吧
回家路上整个脑子都被这个问题困扰着。难道密码中含有@符号的redis集群,Django真的连接不上?反复的问自己。
问了其他同事,生产环境是否有其他的redis集群可以用来调试。很遗憾,并没有。
要不,我自己创建一个redis集群,把密码设置成含有@符号?
可是,自己本地创建redis集群好麻烦啊。要本地安装虚拟机,想到一堆配置就直接劝退。
洗完澡,和老婆聊了1h左右的视频。已经到11点多,准备睡觉?
那是不可能的,带着问题是很难入睡!哎,这个是老毛病了。
突然想到了一个点,最小试错原则。自己搭建本地集群很麻烦,公司又没有多余的集群。
那直接买一个云版的redis集群?说干就干,直接从床上起来,打开电脑。
这时问题又来了,阿里云还是腾讯云?
鉴于双11买了腾讯云2c 4g 8m的服务器,只要199就能3年。
再对比之前买阿里云那个1c 2g 1m服务器,3年也要100多。
瞬间对腾讯云好感倍增,决定先买腾讯云。
一顿 *** 作,发现腾讯云是真的难用:
最最最重要,给把实例绑定了安全组后,外网还是无法访问???(不管了,反正我就是很生气)
对腾讯云太失望了,不得不把最后一根稻草压在阿里云身上。
所幸,阿里云没有让我失望!
咔咔咔,一顿 *** 作:
密码中含有@符号,但连接一点毛病都没有!!!
至此,问题终于解决了!!!
我已经迫不及待明天去公司验证,但回过头一看,已经是深夜一点半。
自言自语的说了一句:"睡吧,卷王"
经过对比,发现配置只需要生产的配置仅需要在测试的配置上加多一个 :
修复最磨人的bug,往往仅需要一点小小的改动~
为什么测试环境没报错了呢???
因为测试环境的redis集群不需要密码
随着网站运作,难免有些时候需要上传文件。上传文件自然是上传到网站所在的服务器,日积月累,慢慢地网站存储空间越来越少。而且网站迁移和备份都不方便,使用这些资源时也占用大量服务器流量。
较好的解决方案是使用第三方存储服务器,例如七牛、阿里云OSS、亚马逊S3等。将文件都放到这些存储服务器,可以减少服务器负担。服务器只剩下必要的静态文件和代码。
以阿里云OSS为例,讲解如何使用第三方存储服务器。(刚好最近用到这个,而且Django有其他人写好的第三方库)
首先,需要拥有OSS。这个去阿里云购买即可。购买之后可得到密钥等一系列信息。
接着,安装oss2库,该库是Python对应oss的 *** 作库。
再安装或下载Django OSS的Storage库。这些库是继承Django的Storage类,并重写相关方法。Django的Stroage是管理上传文件的存储。如何自定义Storage可参考Django官方文档。
执行如下命令,安装Django-Aliyun-OSS2-Storage:
也可以不用pip安装,打开该第三方库的Github,下载源码到本地。这里我需要修改部分代码,所以直接下载把整个包放到Django项目的根目录(也可其他位置)。
安装下载完成之后,配置Django的Settings,添加如下设置:
另外,还有两个对应参数需要注意一下,MEDIA_ROOT和MEDIA_URL。
MEDIA_ROOT是媒体文件的上传位置根目录,由于设置了BUCKET_NAME,一般在这个bucket中。可以设置为空字符串。
文件自然上传到Django模版的FileField字段设置的upload_to位置。
MEDIA_URL是获取媒体文件的链接前缀,可根据自己的oss文件链接位置添加。
由于上传的文件需要开放被用户下载,BUCKET_ACL_TYPE设置为公共的。若你的静态文件也需要上传到OSS中,设置如下:
设置无误后,重启Django即可使用。上传文件将自动上传到OSS中。
上面提到我要修改里面的源码。因为发现上传的文件在下载时的文件名是一串乱码,不是上传时的文件名。这个需要设置一些header信息,可参考OSS的SDK文档。该header需要在上传文件时就提交,而上面的django-aliyun-oss2-storage在上传文件时没有写入header信息。
打开该包的源码文件backendspy,找到AliyunBaseStorage类的_save方法。修改如下:
这样设置,点击文件链接,即可下载并且下载文件名是上传的文件名。若你不是什么类型文件都需要这么处理,可以判断filename的后缀名加以处理。
在使用 nginx+uwsgi+django的部署流程中,经常会有这样一种问题,那就是。当主机因为某些原因重启之后,发现之前的项目也挂掉了,如下图大大的502显然,我们的nginx已经启动了,这种情况肯定是uwsgi服务器的问题。不过,既然接受了Python的简单易用和快速开发优势,作为tradeoff,就要学会接受和处理Python的一些缺点。用django作数据服务器两年多,确实会有一些性能问题。
1异步django的>
2缓存和队列用ZeroMQ、Memcached来做缓存和队列就解决了。
3影响性能的函数如果真的有CPU密集型的函数影响性能,可以编译成C来解决性能问题,一些矩阵 *** 作也可以通过numpy来解决
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)