美文网首页
python菜鸟开发日记-迷你IP资源代理池的开发

python菜鸟开发日记-迷你IP资源代理池的开发

作者: python菜鸟 | 来源:发表于2018-04-04 21:28 被阅读28次

设计原因

刷阅读量,写写小爬虫,给自己的博客刷刷阅读量等等,直接用电脑刷吧,估计IP分分钟被封。所以只能通过不停的更换IP来进行刷流量,反正家里的网络反正是闲着的。

设计方案

python主要用的是celery分布式队列。利用redis做数据存储,采用gevent做协程并发。
学习资料

request 中文学习文档
bs4中文学习文档

  • cdlery
        1.定时每天抓取代理网站的IP地址。
        2.定时每天(2次)对IP地址进行测试等待时间过长给予删除,对于超时的IP进行剔除。
    
  • redis
         1.缓存IP,并且设置存储超时时间。
    
  • 程序调用
    1.编写python脚本,直接调用redis里面的IP,并且进行使用,如发现IP地址出现超时的情况,直接从redis内部清除。

大致的逻辑拓扑图如下:


逻辑拓扑

作为一个菜鸟,还是需要严格的按照程序的设计方式来进行。

开发环境搭建:

  • 运行cmd-bash打开windows下linux环境。
  • mkdir ipserver创建文件夹。
  • pipenv install 创建虚拟变量环境,会在目录下创建2个文件Pipfile,Pipfile.lock。
  • 开始安装python插件包pipenv install gevent celery redis BeautifulSoup4 requests
  • 在项目内开始创建文件夹core,bin,log,celerymanager。
  • 安装redis数据库,直接从官网下载源码安装即可。


    ls目录查看如下
正式环境搭建完成后创建py文件。

先做一个简单的测试测试是否可用。


目录如下
#run_celery.py
from __future__ import absolute_import,unicode_literals
from celery import Celery
app = Celery(
    'manager',#名称
    broker='redis://127.0.0.1:6379/0',#任务建立
    backend='redis://127.0.0.1:6379/1',#任务反馈
    include=['celerymanager.tasks'])#可添加多个任务
if __name__ == '__main__':
    app.start()
#tasks.py
from __future__ import absolute_import,unicode_literals
#导入app
from run_celery import app
#(以装饰器的方式)
@app.task   
def add(x,y):
    return x+y

启动测试:
进入项目内输入命令启动celery分布式队列:

pipenv run celery -A run_celery worker --loglevel=info

查看启动正常,并且tasks内存在add函数。


启动正常

在启动pipenv run python3
输入命令测试:

>>> from celerymanager.tasks import add
>>>
>>>
>>> add.delay(4,5)
<AsyncResult: c6031cea-10e4-411f-99c6-430b2674ff3d>
>>> res = add.delay(4,5)
>>> res.get()

测试分布式队列正常,查看redis内的数据正常。

数据正常

项目正式开始编写。

相关文章

网友评论

      本文标题:python菜鸟开发日记-迷你IP资源代理池的开发

      本文链接:https://www.haomeiwen.com/subject/vhplhftx.html