分类目录归档:Python

windows下安装selenium报错解决

在windows下安装selenium 反复安装了几次,都报这个错误:

File “c:\users\jibingchuan\appdata\local\programs\python\python36-32\lib\conte
xtlib.py”, line 99, in __exit__
self.gen.throw(type, value, traceback)
File “c:\users\jibingchuan\appdata\local\programs\python\python36-32\lib\site-
packages\pip\_vendor\urllib3\response.py”, line 307, in _error_catcher
raise ReadTimeoutError(self._pool, None, ‘Read timed out.’)
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=’files
.pythonhosted.org’, port=443): Read timed out.

 

解决也简单,延长超时时间就可以解决:

pip3 –default-timeout=1000 install selenium

安装完上面的还没完,运行时有报错:

ERROR:install_util.cc(597)] Unable to readregistry  value HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmen
tToken for writing result=2

然后在注册表里加一个值就可以了。

selenium-register

新建一个字符串值,名称是:MachineLevelUserCloudPolicyEnrollmentToken

网上也有这么修复的,可以参考:

 

 

python升级后pip不能用解决方法

 

升级完python2.7后pip不可用,还是老的2.6下的,需要升级Pip到2.7下

按这个方式安装pip:

 

 

官网文档:

https://pip.pypa.io/en/stable/installing/

然后:

# whereis pip

pip: /usr/bin/pip /usr/bin/pip2.6 /usr/local/bin/pip2.7 /usr/local/bin/pip

直接用这个安装需要的包就是2.7的了:

/usr/local/bin/pip install requests

kafka培训PPT

kafka-20180314

kafka常用操作:

查看topic列表:

1.kafka-topics.sh –list –zookeeper  10.1.14.39:2181,10.1.14.40:2181,10.1.14.41:2181

创建topic:

2.kafka-topics.sh –create –zookeeper 10.1.14.39:2181,10.1.14.40:2181,10.1.14.41:2181 –replication-factor 3 –partitions 1 –topic my-replicated-to

查看topic详细信息

3.kafka-topics.sh –describe –zookeeper  10.1.14.39:2181,10.1.14.40:2181,10.1.14.41:2181   –topic

生产消息:

./kafka-console-producer.sh –broker-list 10.1.14.39:9092,10.1.14.40:9092,10.1.14.41:9092 –topic nglogs

消费消息

./kafka-console-consumer.sh –bootstrap-server   10.1.14.39:9092,10.1.14.40:9092,10.1.14.41:9092    –from-beginning –topic nglogs

zookeeper相关命令:

bin/zkServer.sh stop

bin/zkServer.sh start

bin/zkServer.sh status

./zkCli.sh -server 10.1.14.41:2181

#see all topics
ls /brokers/topics
ls /

#broker info
ls /brokers/ids
get /brokers/ids/0

get /controller_epoch
#check partition
get /brokers/topics/my-replicated-topic
get /brokers/topics/nglogs/partitions/state

#add partions
ls /brokers/topics/nglogs/partitions

#修改分区

bin/kafka-topics.sh –alter –zookeeper 10.1.14.39:2181,10.1.14.40:2181,10.1.14.41:2181 –partitions 3 –topic nglogs

 

测试脚本:

consumer.py

producter.py

 

 

关于Django学习的计划

各位小伙伴好,上周刚说到要开始我们的django学习之旅了,谁知上周公司业务调整,临时安排了很多工作,搞得天天加班到11点(夜里), 回到家累成狗,连按电脑开关的力气都没有了,  虽然上周身体比较累,但脑袋却没闲着,就构思了后续的学习计划, 因为吧写脚本跟写web平台差别还是非常大的,因为脚本都是单一性的任务或功能,但要做web运维平台它是一个综合性技术的体现,比如最基本的html你得懂,像html的基本的table, form、列表等在实际开发中用的非常的多,如果这个都不熟练,那越往后学难度会越大,在了解了html的基础上,css你要懂一点吧,不然列表菜单放左边还是放右边,站点导航栏怎么设置,页面背景用什么颜色,总不能一个站点就一个颜色吧,所以css可能不需要像专业前端一样,但最起码一些简单的设置你要必须懂,假设你这二项全部过关,你以为就OK了?NO,差的还很远, 因为我们不是专业设计,所以做出来的平台界面一定不美观,你懂的,现在做什么都讲究时尚炫酷(体现装逼的时刻),要想把自己的网站做的更专业一点,你怎能不去了解bootstrap?如果你已经能把bootstrap样式运用的炉火纯青,你这时候你就能完成一个看着比较专业的网站了,但是问题又来了,我需要在页面上加一些动态效果怎么办呢?那就得去学习javascript呀, 这玩意儿很厉害,js现在是搞前端的基本技能,不然都不好意思封自己为前端工程师,到这还没完,在实际开发中假设你数据库里已经存好了一些数据,你需要在前端页面实时把这些数据展现出来, 怎么办?那你得去学习AJAX呀,当然用JavaScript写一个完整的AJAX代码是可以的,但如果有更方便的做法,我们为没有理由不去选择,这时候就用到另一个东东了,它的名字就叫jquery了,写到这我们总结一下做一个web站点需要学习的内容: html,  css, bootstrap, javascript, jquery,   如果以上技术你都具备了,然后在加上我们的python + django,你基本就全能工程师了, 不,全能太俗了,他们的名字叫叫全栈工程师,英文名字是Full Stack developer,所以接下来我打算把这些内容逐步展开来写,但从哪个部分开始这个我可伤了脑筋,因为我不知道每个人的水平,苦想了半天,我还是觉得就从最基本的html说起吧,由浅入深逐步开始学习,这是正道儿,另外欢迎每个小伙伴给我留言探讨。

python基础17-并发编程(2)

上篇我们介绍了Python的多线程模式,也了解了在python中有GIL这么个东西,所以cpu密集型的程序在python中是无法实现真正并发的,因为实际执行的还的单个线程,可现在的服务器都至少是16核,那岂不浪费了, 所以如果我们想要重分利用cpu资源,我们就需要在Python中采用多进程模式,就是用进程的方式实现并发,在Python下实现多进行时用multiprocessing模块来实现,这个模块用法跟threading.Thread非常类似,但不同的时它没有GIL锁,可以在多核CPU机器上来实现真正的并发执行,关于进程线程概念就不多说了,上篇已经全部介绍了,这篇就直接就直接上代码了,代码是在上篇基础上进行的修改,如下:

从上面代码可以看到,在使用上真的非常像线程,而且大部分方法的功能也是一样的,这里是用Process创建进程对象,join()方法等待进程池中的全部进程,target我们给一个可调用对象,这是我认为最简答的方式,给了一个函数,函数内容还是上篇的内容我基本没动,一样运行没有任何问题。

上面这种方法我们已经实现了多进程,如果任务执行的对象不算太多是可以的,但如果任务时间比较长且操作对象比较多可能会出现进程占用系统资源过度造成服务器慢的情况,因为同时在机器上启动上百上千个进程,而且短时间任务执行不完,就会非常的耗系统资源,机器估计卡的用不了,怎么解决这种问题呢,这就需要用到我们的进程池了,使用Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,进程池的大小可以参考机器CPU核数来指定,那么这样一来,我们的代码需要修改如下:

可以看到我们使用了进行池,代码逻辑反而简单了,这里map函数跟python中内置的map功能一样,它需要2个参数,一个是函数,一个是序列,不同的是它可以支持多进程,这里我设定了5个进程,就是最多可以跑5个进程,这样一来就解决了我们上面提到的问题。

关于并发编程的内容就写这2篇了,随着这篇的结束,我觉得python的基础部分就要告一段了,当然如果在基础部分还有想了解的内容,可以后台留言给我,我会穿插到后续的文章中,另外如果小伙伴是一路跟过来的话,我相信你已经能熟练运用python来实现工作中的一些需求了,  但我们python的学习之路远不止如此,因为随着各个公司业务的复杂度提升,对运维人员技能要求也越来越高,如何快速完成需求,如何把运维繁杂的任务简单化,这可能是大多数公司运维要解决的问题,要达到这条路我个人觉得离不开web运维自动化平台,通过平台使我们运维的一些工作通过平台点几下鼠标就可以完成,所以我认为这才是我们的学习目标, 但要实现这个目标,就要进入我们下一个阶段的学习了,下个阶段我们主要介绍python web框架Django技术, 还清小伙伴多多支持(请戳右上角)。