pythonwebsocket如何cas认证

Python010

pythonwebsocket如何cas认证,第1张

1、浏览器正常发起Web服务请求(带过期cookie或者无cookie)。

2、web服务发现cookie无效,重定向请求到CAS登录界面进行认证。

3、用户填写认证信息后,将认证信息POST给CAS服务器即可。

1、设定缓存放在那里:CACHE_BACKEND

也可以使用memcached:CACHE_BACKEND = 'memcached://127.0.0.1:11211/'

多个memcached:CACHE_BACKEND = 'memcached://172.19.26.240:11211172.19.26.242:11211/'

/// pip install python-memcached

2、python 操作memcached:

import memcache

mc = memcache.Client(['139.129.5.191:12000'], debug=True)

mc.set("name", "python")

ret = mc.get('name')

print (ret)

python

3、设置权重

import memcache

mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2),('1.1.1.3:12000',3)])

mc.set('k1','value1')

ret = mc.get('k1')

print (ret)

4、已经存在的键重复添加会出错:

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.add('k1', 'v1')

mc.add('k1', 'v2') # 报错,对已经存在的key重复添加,失败!!!

例如:

ret1 = mc.add('name','tom')

print(refalse)

ret2 = mc.add('name','jack')

print(retrue)

结果

False #当已经存在key 那么返回false

True #如果不存在key 那么返回treue

5、替换操作:replace,如果键不存在,出错

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.set('name','tom')

re = mc.get('name')

print(re)

rereplace = mc.replace('name','jack')

re = mc.get('name')

print(rereplace,re)

结果:

tom #第一次赋值

True jack #如果存在key那么修改成功为yaoyao 返回True

rereplace = mc.replace('name1','hahaha')

re = mc.get('name1')

print(rereplace,re)

结果:

False None #如果不存在key,修改失败,返回空值

6、set:键值存在,就修改,不存在,则创建

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.set('name','tom')

re = mc.get('name')

print('set用法',re) #设置一个键值对

dic = {'name':'to,','age':'19','job':'IT'}

mc.set_multi(dic) #设置多个键值对

mcname = mc.get('name')

mcage = mc.get('age')

mcjob = mc.get('job')

print('set_multi用法:',mcname,mcage,mcjob)

7、delete:

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.set('name','tom')

re = mc.get('name')

print('存在',re)

mc.delete('name')

re = mc.get('name')

print('删除',re) #删除一个键值对

8、get

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.set('name','tom')

re = mc.get('name')

print('get',re) #获取一个键值对

dic = {'name':'to,','age':'19','job':'IT'}

mc.set_multi(dic)

regetmu=mc.get_multi(['name','age','job'])

print('get_multi',re) #获取多个键值对的值

9、append,prepend

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.set('num','第一|')

re = mc.get('num')

print(re)

mc.append('num','追加第二个') #在第一后面追加

re = mc.get('num')

print(re)

mc.prepend('num','我是零个') #在第一前面追加

re = mc.get('num')

print(re)

结果:

第一|

第一|追加第二个

我是零个第一|追加第二个

10、decr,incr自增自减

import memcache

mc = memcache.Client(['0.0.0.0:12000'])

mc.set('num','1')

re = mc.get('num')

print('我是没加过的值',re)

mc.incr('num','9')

re = mc.get('num')

print('我是加上新增后的值',re)

mc.decr('num','5')

re = mc.get('num')

print('我是减去的值',re)

我是没加过的值 1

我是加上新增后的值 10

是减去的值 5

11、锁机制:gets cas

import memcache

mc = memcache.Client(['0.0.0.0:12000'],cache_cas=True)

mc.set('count','10')

reget = mc.get('count')

print('件数',reget)

regets = mc.gets('count')

print(regets)

下面的设置将会执行失败,剖出异常,从而避免非正常数据的产生

recas = mc.cas('count','11')

print(recas)

regets = mc.gets('count')

print('修改',regets)

字符串是 Python

中常用的数据类型,我们可以使用引号('或")来创建字符串,对字符串进行使用和操作,需要用到特定的函数,以下是常用的Python字符串操作方法:

1. capitalize()

作用:capitalize() 主要是用来实现字符串首字母大写,其他字母小写的功能。

实例:

1

2str1 = "oldboy"

print(str1.capitalize())

输出结果:Oldboy

2. swapcase()

作用:swapcase() 主要是用来实现字符串大小写反转。

实例:

1

2str1 = " Oldboy"

print(str1.swapcase())

输出结果:oLDBOY

3. title()

作用:title() 主要是用来实现字符串非字母隔开的部分,首字母大写,其余字母小写。

实例:

1

2str1 = "Old boy edu com"

print(str1.title())

输出结果:Old Boy Edu Com

4. upper()

作用:upper() 主要是用来实现字符串所有字母全部大写。

实例:

1

2str1 = "Oldboyedu"

print(str1.upper())

输出结果:OLDBOYEDU

5. lower()

作用:lower() 主要是用来实现字符串所有字母全部小写。

实例:

1

2str1 = "oLDBOYEDU"

print(str1.lower())

输出结果:oldboyedu

6. center()

作用:center() 主要是用来实现字符串内容居中,填充物默认为空。

实例:

1

2

3str1 = "Oldboyedu"

print(str1.center(15))

print(str1.center(15,"*"))

输出结果:

Oldboyedu

***Oldboyedu***

7. find()

作用:find() 主要作用是通过元素找索引,可以整体找,可以切片,找不到则返回-1。

实例:

1

2

3str1 = "Oldboyedu"

print(str1.find('b'))

print(str1.find('A'))

输出结果:3 -1

8. index()

作用:index() 主要作用是通过元素找索引,可以整体找,可以切片,找不到会报错。

实例:

1

2

3str1 = " Oldboyedu "

print(str1.index("b"))

print(str1.index("A"))

输出结果:

0

Traceback (most recent call last):

File "", line 1, in

ValueError: substring not found

9. startswith(obj)

作用:startswith(obj) 主要作用是检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。

实例:

1

2str1 = "Oldboyedu"

print(str1.startswith("O"))

输出结果:True

10. endswith(obj)

作用:endswith(obj) 主要作用是检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。

实例:

1

2str1 = " Oldboyedu "

print(str1.endswith("edu"))

输出结果:True

11. strip()

作用:strip() 主要作用是去除字符串前后两端的空格或其他字符、换行符、tab键等。

实例:

1

2

3

4str1 = "***Oldboy***"

print(str1.strip("*")) #去除两边的*

print(str1.lstrip("*")) #去除左边的*

print(str1.rstrip("*")) #去除右边的*

输出结果:

Oldboy

Oldboy***

***Oldboy

12. replace(oldstr, newstr)

作用:replace(oldstr, newstr)主要作用是替换字符串。

实例:

1

2str1 = "Oldboyedu"

print(str1.replace("boy","man"))

输出结果:Oldmanedu

13. isalpha()

作用:isalpha()主要作用是要判断字符串是否只由字母组成,是返回Ture,否返回False。

实例:

1

2

3

4str1 = "Oldboyedu"

str2 = “Old boy edu”

print(str1.isalpha())

print(str2.isalpha())

输出结果:True False

14. isdigit()

作用:isdigit()主要作用是判断字符串是否只由数字组成,是返回Ture,否返回False。

实例:

1

2

3

4str1 = "Oldboyedu"

str2 = “520”

print(str1.isdigit())

print(str2.isdigit())

输出结果:False True

15. format()

作用:format()主要作用是格式化字符串。

方式一:按位置传参

1

2str1 = '我叫{},今年{}岁'.format('oldboy',30)

print(str1)

输出结果:我叫oldboy,今年30岁

方式二:按索引传参

1

2str1 = '我叫{0},今年{1}岁'.format('oldboy',30)

print(str1)

输出结果:我叫oldboy,今年30岁

方式三:按key传参

1

2str1 = '我叫{name},今年{age}岁'.format(age=30,name='oldboy')

print(str1)

输出结果:我叫oldboy,今年30岁

16. count()

作用:count()主要作用是统计元素在字符串出现的次数。

1

2str1 = "oldboyedu"

print(str1.count(‘o’)) #统计字符o在字符串中出现的次数

数据结果:2