首页>>后端>>Python->django如何集群

django如何集群

时间:2023-12-06 本站 点击:0

导读:本篇文章首席CTO笔记来给大家介绍有关django如何集群的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、如何在Django模型中管理并发性2、如何将多个Django模型一起收集到单个列表中3、如何在django中使用多个数据库4、如何在服务器上部署Django项目并使其在后台一直运行5、Django连接Redis集群问题排查思路和总结6、如何用Nginx部署Django

如何在Django模型中管理并发性

1、我们在我们的查询器上使用select_for_update来告诉数据库锁定对象,直到事务完成。

2、在数据库中锁定一行需要一个数据库事务 - 我们使用Django的装饰器transaction.atomic来定义事务。

3、我们使用类方法而不是实例方法 - 我们告诉数据库要上锁,然后它会返回锁的对象给我们。 为了实现这一点,我们需要从数据库中获取对象。 如果我们使用self,那么就是在操作一个已经从数据库中获取出来的对象,这个对象无法保证自己是没有被上锁的。

4、帐户中的所有操作都在数据库事务中执行。

如何将多个Django模型一起收集到单个列表中

似乎你用的方法错了。我印象中用的是get_all,而不是user_set.all(), 或者是就是一个all()

因为你filter返回的结果就是一个对象,或者是对象列表了。应该对象列表。你自己查一下,通过dir(b)就可以知道它的类型

可以用for c in b: print str(c)试试看。

如何在django中使用多个数据库

Database

#

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

},

'db1': {

'ENGINE': 'django.db.backends.postgresql_psycopg2',

'NAME': 'dbname1',

'USER': 'your_db_user_name',

'PASSWORD': 'yourpassword',

如何在服务器上部署Django项目并使其在后台一直运行

前几天老师让我把一个Django项目(爬虫网页)放到校园内网上,但是我想先用自己的服务器来尝试一下。之前刚好有在Digital Ocean上买过服务器用来运行ss脚本,平时服务器一直放着没啥用,所以就拿它来试验一下。

废话不多说,第一步通过WinSCP软件把Django文件传到服务器上。

在服务器中安装Django需要的环境和我所需要的Python第三方库。

以上所有步骤完成后,还需要进行一步操作,这是我经历的一个 坑 。 打开Django文件目录中的 settings.py ,把 ALLOWED_HOSTS=[] 改为 ALLOWED_HOSTS=["*"] 。

在服务器中打开到 manage.py 所在的目录,输入命令:

python3 manage.py runserver 0.0.0.0:8000

然后按下回车,在浏览器中输入: 该服务器IP地址:8000 ,大功告成!

Attention:

1. python3 不是特定的,是根据你的Django项目所需要的环境指定的。

2. 8000 是端口号,可以修改。

如果想要Django项目一直运行,关闭终端后还在运行,即需要运行如下命令, nohup command , command 即位上文所说的 python3 manage.py runserver 0.0.0.0:8000 。

Django连接Redis集群问题排查思路和总结

直接就一个连接失败

确认账号密码和端口没问题后,问题同事配置有没验证过,他说直接从网上 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 集群不需要密码

如何用Nginx部署Django

如果你在windows上开发的django项目。部署的话,需要分三步。

第一步:在linux下下载python用的依赖包,搭建python环境。将windows下的项目复制到linux下,使用django自带服务进行启动。

第二步:下载uwsgi模块并且编写配置文件来替代django自带的服务模块。

第三步:下载nginx包,编译安装。然后创建配置文件,配置nginx启动django项目的信息。然后访问即可。

结语:以上就是首席CTO笔记为大家整理的关于django如何集群的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django如何集群的相关内容别忘了在本站进行查找喔。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/15629.html