本文目录一览:
- 1、如何使用python脚本调用zk 命令
- 2、如何利用pykafka远程消费 zookeeper+kafka集群 python脚本
- 3、python 多线程 访问网站
- 4、python zookeeper 怎么入参
- 5、python无法访问手机存储文件夹
- 6、python爬虫,集群是如何实现节点的发现和管理
如何使用python脚本调用zk 命令
zk命令是你系统中的命令吗
如果是的话
import os
os.system(zk)
这样就可以调用啦
如何利用pykafka远程消费 zookeeper+kafka集群 python脚本
#从kafka消费
#consumer_area = topic_area.get_simple_consumer(auto_offset_reset=OffsetType.LATEST)
#从ZOOKEEPER消费
consumer_area = topic_area.get_balanced_consumer(
consumer_group=b'zs_download_04', # 自己命令
auto_offset_reset=OffsetType.LATEST,#在consumer_group存在的情况下,设置此变量,表示从最新的开始取
#auto_offset_reset=OffsetType.EARLIEST,
#reset_offset_on_start=True,
auto_commit_enable=True,
#auto_commit_interval_ms=1,
zookeeper_connect=ZK_LIST
)
python 多线程 访问网站
#python2
#coding=utf-8
import os,re,requests,sys,time,threading
reload(sys)
sys.setdefaultencoding('utf-8')
class Archives(object):
def __init__(self, url):
self.url = url
def save_html(self, text):
fn = '{}_{}'.format(int(time.time()), self.url.split('/')[-1])
dirname = 'htmls'
if not os.path.exists(dirname):
os.mkdir(dirname)
with open(os.path.join(dirname, fn), 'w') as f:
f.write(text)
def get_htmls(self):
try:
r = requests.get(self.url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print 'get html from ', url
self.save_html(r.text)
except Exception,e:
print '爬取失败',e
def main(self):
thread = threading.Thread(target=self.get_htmls())
thread.start()
thread.join()
if __name__=='__main__':
start=time.time()
fn = sys.argv[1] if len(sys.argv)1 else 'urls.txt'
with open(fn) as f:
s = f.readlines()
for url in set(s):
a=Archives(url.strip())
a.main()
end=time.time()
print end-start
python zookeeper 怎么入参
前提是zookeeper安装包已经在/usr/local/zookeeper下
cd /usr/local/zookeeper/src/c
./configure
make
make install
wget --no-check-certificate
tar -zxvf zkpython-0.4.tar.gz
cd zkpython-0.4
sudo python setup.py install
zkpython应用
下面是网上一个zkpython的类,用的时候只要import进去就行
vim zkclient.py
#!/usr/bin/env python2.7
# -*- coding: UTF-8 -*-
import zookeeper, time, threading
python无法访问手机存储文件夹
无法访问的原因是某一个磁盘中保存了Python的编译环境。在这个编译的环境下,存在一个python.exe文件,然后又对文件换了一个地方存储,所以就会找不到指定的程序文件。解决方法如下:
1、进入到pycharm中,找到菜单栏中的“file”选项,在下拉的列表中选择“settings”,进入到设置对话框。
2、左侧中找到“ProjectInterpreter”选项,在点击它之后,在点击右侧的“设置”图案,在选项中选择“ShowAll”,这样就将全部的项目进行呈现了。
3、打开“ProjectInterpreter”对话框,找到我们旧程序的安装位置,也就是换了位置的文件并选择,在点击右侧的“-”号进行删除。
4、将旧的程序进行删除之后,点右侧的“+”号,这个时候会弹出一个“AddPython…”对话框,找到界面中的“Existiingenvironment”,在右侧的“...”中,添加一个存在的Python环境。
5、添加了之后,点击“OK”,此时在运行文件时,就不会报文件找不到的错误了。
python爬虫,集群是如何实现节点的发现和管理
Ignite集群管理——基于Zookeeper的节点发现
Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于Zookeeper的节点发现。
环境准备,两台笔记本电脑A,B。A笔记本上使用VMware虚拟机安装了Ubuntu系统C。
1、 C安装Zookeeper
由于主要测试Ignite,这里仅仅简单安装一个zookeeper节点,下载zookeeper解压后,直接执行zookeeper目录下的bin/zkServer.sh start命令则成功启动zookeeper。
查看Ubuntu系统C的IP地址为192.168.1.104,zookeeper默认端口为12181。
注意:这里VMware虚拟机的网络适配器一定要选择桥接模式,否则A机器无法访问虚拟机。
2、 A系统运行Ignite节点1;
代码中加粗的部分便是Ignite注册代码,十分简单。
package com.coshaho.learn.ignite.cluster;import org.apache.ignite.Ignite;import org.apache.ignite.IgniteCache;import org.apache.ignite.Ignition;import org.apache.ignite.cache.CacheMode;import org.apache.ignite.configuration.CacheConfiguration;import org.apache.ignite.configuration.IgniteConfiguration;import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;import org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder;/**
*
* IgniteCluster01.java Create on 2017年6月3日 下午10:52:38
*
* 类功能说明: 基于zookeeper集群
*
* Copyright: Copyright(c) 2013
* Company: COSHAHO
* @Version 1.0
* @Author coshaho */public class IgniteCluster01
{ public static void main(String[] args)
{ TcpDiscoverySpi spi = new TcpDiscoverySpi();
TcpDiscoveryZookeeperIpFinder ipFinder = new TcpDiscoveryZookeeperIpFinder(); // Specify ZooKeeper connection string.
ipFinder.setZkConnectionString("192.168.1.104:12181");
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration(); // Override default discovery SPI. cfg.setDiscoverySpi(spi); // Start Ignite node.
Ignite ignite =Ignition.start(cfg);
System.out.println("IgniteCluster1 start OK.");
CacheConfigurationInteger, String cacheCfg = new CacheConfigurationInteger, String();
cacheCfg.setBackups(1);
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
cacheCfg.setName("myCache");
IgniteCacheInteger, String cache = ignite.getOrCreateCache(cacheCfg);
cache.put(1, "ignite1");
System.out.println(cache.get(1));
System.out.println(cache.get(2));
}
}
3、 B系统运行Ignite节点2;
package com.coshaho.learn.ignite.cluster;import org.apache.ignite.Ignite;import org.apache.ignite.IgniteCache;import org.apache.ignite.Ignition;import org.apache.ignite.cache.CacheMode;import org.apache.ignite.configuration.CacheConfiguration;import org.apache.ignite.configuration.IgniteConfiguration;import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;import org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder;public class IgniteCluster02
{ public static void main(String[] args)
{
TcpDiscoverySpi spi = new TcpDiscoverySpi();
TcpDiscoveryZookeeperIpFinder ipFinder = new TcpDiscoveryZookeeperIpFinder(); // Specify ZooKeeper connection string.
ipFinder.setZkConnectionString("192.168.1.104:12181");
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration(); // Override default discovery SPI. cfg.setDiscoverySpi(spi); // Start Ignite node.
Ignite ignite =Ignition.start(cfg);
System.out.println("IgniteCluster2 start OK.");
CacheConfigurationInteger, String cacheCfg = new CacheConfigurationInteger, String();
cacheCfg.setBackups(1);
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
cacheCfg.setName("myCache");
IgniteCacheInteger, String cache = ignite.getOrCreateCache(cacheCfg);
cache.put(2, "ignite2");
System.out.println(cache.get(1));
System.out.println(cache.get(2));
}
}
可以看到,Ignite节点2可以成功访问到Ignite节点1存入缓存的数据。