本篇文章首席CTO笔记来给大家介绍有关django用什么来管理以及django用来做什么的相关内容,希望对大家有所帮助,一起来看看吧。
本文目录一览:
1、Django与supervisor 管理进程2、有大拿在Django中用过LDAP来管理用户吗3、什么是django?4、如何在Django模型中管理并发性Django与supervisor 管理进程
在Django项目中,我们需要用到一些独立于Django框架外的脚本。这样一些脚本可能需要独立的持续运行,且具有很强的可维护性,这个时候supervisor就可以排上用场了。
直接使用pip进行
使用supervisor很简单,只需要修改一些配置文件,就可以使用了。
运行
即可看到默认配置情况,但是一般情况下,我们都不要去修改默认的配置,而是将默认配置重定向到另外的文件中,不同的进程运用不同的配置文件去对默认文件进行复写即可。
默认配置说明
配置文件都有说明,且很简单,就不做多的描述了,在上面有一些建议修改的目录,若做了修改,则应先创建这些文件,需要注意权限问题,很多错误都是没有权限造成的。
现在,让我们来启动supervisor服务。
查看supervisord 是否运行:
上面我们已经把 supervisrod 运行起来了,现在可以添加我们要管理的进程的配置文件。可以把所有配置项都写到 supervisord.conf 文件里,但并不推荐这样做,而是通过 include 的方式把不同的程序(组)写到不同的配置文件里,对,就是默认配置中的最后的那个include。下面来对项目进行简单的配置。
假设我们把项目配置文件放在这个目录中: /etc/supervisor/
则我们需要修改 /etc/supervisord.conf 中的include为:
测试py文件:
以下为配置文件目录 /etc/supervisor/test.conf :
配置完成以后,即可运行:
查看运行状态
打开浏览器,输入127.0.0.9001,输入用户名与密码(如果配置文件中inet_http_server中作了设置),可以看到下面这个界面:
在启动服务之后,运行:
或者直接 supervisorctl
若成功,则会进入supervisorctl的shell界面,有以下方法:
执行相关操作后,可以在web端看到具体的变化情况,如stop 程序
其实,也可以不使用supervisorctl shell界面,而在bash终端运行:
按照官方文档的定义,一个 [program:x] 实际上是表示一组相同特征或同类的进程组,也就是说一个 [program:x] 可以启动多个进程。这组进程的成员是通过 numprocs 和 process_name 这两个参数来确定的,这句话什么意思呢,我们来看这个例子。
上面这个例子会启动两个进程,process_name 分别为 foo:foo_01 和 foo:foo_02。通过这样一种方式,就可以用一个 [program:x] 配置项,来启动一组非常类似的进程。
更详细配置,点击 这里
Supervisor 同时还提供了另外一种进程组的管理方式,通过这种方式,可以使用 supervisorctl 命令来管理一组进程。跟 [program:x] 的进程组不同的是,这里的进程是一个个的 [program:x] 。
当添加了上述配置后,progname1 和 progname2 的进程名就会变成 thegroupname:progname1 和 thegroupname:progname2 以后就要用这个名字来管理进程了,而不是之前的 progname1。
以后执行 supervisorctl stop thegroupname: 就能同时结束 progname1 和 progname2,执行 supervisorctl stop thegroupname:progname1 就能结束 progname1。
实际上,默认情况下,supervisored 也是一个进程,最理想的的情况应该是将其安装为系统服务,安装方法可以参考 这里 ,安装脚本参考 这里 ,由于没有做具体的实验,此处不展开说明。
其实还有一个简单的方法,因为 Linux 在启动的时候会执行 /etc/rc.local 里面的脚本,所以只要在这里添加执行命令就可以
以上内容需要添加在 exit 命令前,而且由于在执行 rc.local 脚本时,PATH 环境变量未全部初始化,因此命令需要使用绝对路径。
在添加前,先在终端测试一下命令是否能正常执行,如果找不到 supervisord,可以用如下命令找到
有大拿在Django中用过LDAP来管理用户吗
使用环境:
python 2.7
django 1.3
python-ldap-2.4.3
django-auth-ldap-1.0.12
settings.py:
import ldap
from django_auth_ldap.config import LDAPSearch,PosixGroupType
AUTH_LDAP_SERVER_URI = 'ldap://*.*.*.*:389' #服务器URI
AUTH_LDAP_BIND_DN = "cn=admin,dc=qfei,dc=com"
AUTH_LDAP_BIND_PASSWORD = "123456"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查询用户
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查找组
ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)"
)
AUTH_LDAP_GROUP_TYPE = PosixGroupType(name_attr="cn")
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"is_staff": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",
"is_active": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",
"is_superuser": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com", #验证 Django 的 User 的is_staff,is_active,is_superuser
}
AUTH_LDAP_USER_ATTR_MAP = { #把LDAP中用户条目的属性 映射到 Django 的User
"username":"uid",
"password":"userPassword",
"first_name": "givenName",
"last_name": "sn",
"email":"mail",
}
AUTH_LDAP_MIRROR_GROUPS=True #注意 此为重点:当这个值为 True, LDAP的用户条目映射并创建 Django User 的时候,会自动映创建Group
AUTH_LDAP_ALWAYS_UPDATE_USER = True #是否每次都从LDAP 把用户信息 更新到 Django 的User
AUTH_LDAP_FIND_GROUP_PERMS = True #如果为True, LDAPBackend将提供基于LDAP组身份验证的用户属于的组的权限
AUTH_LDAP_CACHE_GROUPS = True #如果为True,LDAP组成员将使用Django的缓存框架。
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 1800 #缓存时长
AUTHENTICATION_BACKENDS=( #设置使用 LDAPBackend
"django_auth_ldap.backend.LDAPBackend",
"django.contrib.auth.backends.ModelBackend",
)
注:
1,需要创建 django 的 User Group 表
2,当LDAP条目 同步至 django User,Group 后,同关系型数据库一样 操作 数据即可
不足:暂时 未实现 django 表 至LDAP 的数据双向同步
什么是django?
Django是用Python开发的一个免费开源的Web框架,提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。并且囊括的Web应用部分可以用于快速搭建高性能、优雅的网站。并且提供了通用Web开发模式的高度抽象,通过DRY的理念为频繁进行的编程作业提供了快速解决方法。
Django能在开源发行之后吸引众多追随者,离不开它所具备的以下优点:
①齐全的功能。自带大量常用工具和框架,可轻松、迅速开发出一个功能齐全的Web应用。
②完善的文档。Django已发展十余年,具有广泛的实践案例,同时Django提供完善的在线文档,Django用户能够更容易地找到问题的解决方案。
③强大的数据库访问组件。Django自带一个面向对象的、反映数据模型与关系型数据库间的映射关系的映射器,开发者无须学习SQL语言即可操作数据库。
④灵活的URL映射。Django提供一个基于正则表达式的URL分发器,开发者可灵活地编写URL。
⑤丰富的模板语言。Django模板语言功能丰富,支持自定义模板标签;Django也支持使用第三方模板系统,如jinja2等。
⑥健全的后台管理系统。Django内置了一个后台数据管理系统,经简单配置后,再编写少量代码即可使用完整的后台管理功能。
⑦完整的错误信息提示。Django提供了非常完整的错误信息提示和定位功能,可在开发调试过程中快速定位错误或异常。
⑧强大的缓存支持。Django内置了一个缓存框架,并提供了多种可选的缓存方式。
⑨国际化。Django包含了一个国际化系统,Django组件支持多种语言。
如何在Django模型中管理并发性
1、我们在我们的查询器上使用select_for_update来告诉数据库锁定对象,直到事务完成。
2、在数据库中锁定一行需要一个数据库事务 - 我们使用Django的装饰器transaction.atomic来定义事务。
3、我们使用类方法而不是实例方法 - 我们告诉数据库要上锁,然后它会返回锁的对象给我们。 为了实现这一点,我们需要从数据库中获取对象。 如果我们使用self,那么就是在操作一个已经从数据库中获取出来的对象,这个对象无法保证自己是没有被上锁的。
4、帐户中的所有操作都在数据库事务中执行。
结语:以上就是首席CTO笔记为大家整理的关于django用什么来管理的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django用来做什么、django用什么来管理的相关内容别忘了在本站进行查找喔。