首页
学习
活动
专区
工具
TVP
发布

扎心了老铁

专栏作者
89
文章
206042
阅读量
41
订阅数
如何使用supervisor管理你的应用
1、前言 Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是UNIX-like系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。 提供的高可用场景,当你的程序出现异常,例如core/内存溢出等,导致服务进程被杀死,这个时候supervisort监听到进程终止后,会自动将它重新拉起。 2、安装 supervisor是基于python开发的,所以安装时首先要保证有python环境
用户1225216
2018-03-29
2K0
python语言中的AOP利器:装饰器
一、前言 面向切面编程(AOP)是一种编程思想,与OOP并不矛盾,只是它们的关注点相同。面向对象的目的在于抽象和管理,而面向切面的目的在于解耦和复用。 举两个大家都接触过的AOP的例子: 1)java中mybatis的@Transactional注解,大家知道被这个注解注释的函数立即就能获得DB的事务能力。 2)python中的with threading.Lock(),大家知道,被这个with代码块包裹的部分立即获得同步的锁机制。 这样我们把事务和加锁这两种与业务无关的逻辑抽象出来,在逻辑上解耦,并且可以
用户1225216
2018-03-29
2.1K0
python codis集群客户端(二) - 基于zookeeper对实例创建与摘除
 在这一篇中我们实现了不通过zk来编写codis集群proxys的api, 如果codis集群暴露zk给你的话,那么就方便了,探活和故障摘除与恢复codis集群都给你搞定了,你只需要监听zookeeper中实例的状态就好了。 下面看我的实现。 1、CodisByZKPool.py 这里通过zk读取并初始化pool_shards,简单说一下如何故障摘除和恢复 1)我们监听zk中节点状态改变,当发现某个实例对应的节点状态变化了,比如DELETE了,那么我们认为这个实例挂了,我们就会重新_create_pool刷
用户1225216
2018-03-05
1.7K2
python codis集群客户端(一) - 基于客户端daemon探活与服务列表维护
在使用codis时候,我们遇到的场景是,公司提供了HA的Proxy(例如N个),但是不暴露zookeeper(也就是说没有codis后端服务列表)。 如果暴露zk的话,可以看这一篇 要求在开发客户端a
用户1225216
2018-03-05
1.5K0
python服务端多进程压测工具
本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景下多线程多进程的区分并不明显(详情请参见GIL相关)。不过一旦出现词表参数加密、返回内容校验等事情的话,多进程对发送效率的提升还是很明显的。 可以指定发送QPS 可以指定发压的QPS,根据并行度和请求相应时间,可以估算出可发送QPS峰值。例如并行度是10,响应时间是100ms,那么QPS峰值应该是(1s/100ms * 10)=100,此工具可以将Q
用户1225216
2018-03-05
2.1K0
python使用上下文管理器实现sqlite3事务机制
如题,本文记录如何使用python上下文管理器的方式管理sqlite3的句柄创建和释放以及事务机制。 1、python上下文管理(with) python上下文管理(context),解决的是这样一类问题,在进入逻辑之前需要进行一些准备工作,在退出逻辑之前需要进行一些善后工作,上下文管理可以使得这种场景变得清晰和可控。 with语句是python上下文管理的基本用法,例如读写文件 with open('filea', r) as f: f.readlines() file使用的就是上下文管理机制,这
用户1225216
2018-03-05
2.6K1
Kazoo Python Zookeeper 选主
本文讲述基于zookeeper选主与故障切换的方法。我们的例子使用的是python。 使用的库是kazoo,安装方式 pip install kazoo  应用场景: 多个实例部署,但不是“去中心化”的部署方式; 有且只有一个节点作为master,履行master的职责,在例子中是注册调度器; 其他实例作为slave,不提供调度功能,但是在master节点挂掉之后,可以重新进行选主调度。 1、注册调度器 我们只给出伪代码,简单的打印调度器注册结果。 # -*- coding:utf-8 -*- # 调度
用户1225216
2018-03-05
1.8K2
python分布式环境下的限流器
项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数量,目的是通过有损来换取高可用。 例如我们的场景是,有一个服务接收请求,处理之后,将数据bulk到Elasticsearch中进行索引存储,bulk索引是一个很耗费资源的操作,如果遭遇到请求流量激增,可能会压垮Elasticsearch(队列阻塞,内存激增),所以需要对流量的峰值做一个限制。 2)客户端限流 限制的是客户端进
用户1225216
2018-03-05
2.1K0
python重试(指数退避算法)
本文实现了一个重试的装饰器,并且使用了指数退避算法。指数退避算法实现还是很简单的。先上代码再详细解释。 1、指数退避算法 欠奉。http://hugnew.com/?p=814 2、重试装饰器retr
用户1225216
2018-03-05
2.1K1
Django扩展自定义manage命令
使用django开发,对python manage.py ***命令模式肯定不会陌生。比较常用的有runserver,migrate。。。 本文讲述如何自定义扩展manage命令。 1、源码分析 manage.py文件是通过django-admin startproject project_name生成的。 1)manage.py的源码 a)首先设置了settings文件,本例中CIServer指的是project_name。 b)其次执行了一个函数django.core.management.execut
用户1225216
2018-03-05
2.5K0
python contextlib 上下文管理器
1、with操作符 在python中读写文件,可能需要这样的代码 try-finally读写文件 file_text = None try: file_text = open('./text', 'r') print file_text.read() except IOError, ex: traceback.print_exc() finally: if file_text: file_text.close() 同样,在python中使用线程锁,可能需要这样
用户1225216
2018-03-05
6630
python concurrent.futures
python因为其全局解释器锁GIL而无法通过线程实现真正的平行计算。这个论断我们不展开,但是有个概念我们要说明,IO密集型 vs. 计算密集型。 IO密集型:读取文件,读取网络套接字频繁。 计算密集型:大量消耗CPU的数学与逻辑运算,也就是我们这里说的平行计算。 而concurrent.futures模块,可以利用multiprocessing实现真正的平行计算。 核心原理是:concurrent.futures会以子进程的形式,平行的运行多个python解释器,从而令python程序可以利用多核CPU来
用户1225216
2018-03-05
1.4K0
django celery的分布式异步之路(一) 起步
 如果你看完本文还有兴趣的话,可以看看进阶篇 设想你遇到如下场景: 1)高并发 2)请求的执行相当消耗机器资源,流量峰值的时候可能超出单机界限 3)请求返回慢,客户长时间等在页面等待任务返回 4)存在耗时的定时任务 这时你就需要一个分布式异步的框架了。 celery会是一个不错的选择。本文将一步一步的介绍如何使用celery和django进行集成,并进行分布式异步编程。 1、安装依赖 默认你已经有了python和pip。我使用的版本是: python 2.7.10 pip 9.0.1 virtualenv
用户1225216
2018-03-05
2.3K0
django celery的分布式异步之路(二) 高并发
当你跑通了前面一个demo,博客地址:http://www.cnblogs.com/kangoroo/p/7299920.html,那么你的分布式异步之旅已经起步了。 性能和稳定性是web服务的核心评价指标。下面我们来说,怎么样部署服务,实现web服务的高并发和高可用。 我们将通过一些工具和部署,提升web服务的性能。 这篇文章我们先讲高并发 部署方式:nginx+gunicorn+wsgi 1、django和python的缺陷分析 django作为一个python实现的web服务器,它的性能其实是没有多大
用户1225216
2018-03-05
2.5K0
django中间件Middleware
熟悉web开发的同学对hook钩子肯定不陌生,通过钩子可以方便的实现一些触发和回调,并且做一些过滤和拦截。 django中的中间件(middleware)就是类似钩子的一种存在。下面我们来介绍一下,并
用户1225216
2018-03-05
1.2K0
thrift例子:python客户端/java服务端
java服务端的代码请看上文。 1、说明: 这两篇文章其实解决的问题是,当使用python去访问大数据线上集群的时候,遇到两个问题: 1)python-hadoop和python-hive相关包链接不稳定,表现为经常出现链接超时; 2)如果使用fork进程执行hadoop fs或者hive -e的方式则消耗大量的机器资源,包括进程资源和集群链接资源。 我们的解决方式是写一个java的代理服务,使用java-hadoop封装了对集群的操作,通过thrift提供接口给python程序。 2、编译.thrfit
用户1225216
2018-03-05
1.4K0
python使用装饰器@函数式化django开发
django是一个python web开发的框架。作为一个框架MVC的架构已经实现起来了。但是编码的时候你经常要进行进一步的抽象。 AOP是一种称为面向切面的开发思想,意思是将部分功能代码在运行时动态的加载到指定位置。最常见的应用是Spring中的依赖注入@Autowired。 而装饰器也可以被看成是一种AOP的实现,但是又有些许的不同,让我们来体会一下。 在我们的实例中我们将django中的views.py(其实是controller层)拆出了implement.py(实现)和decorator.py(装
用户1225216
2018-03-05
1.1K0
Hadoop通过HCatalog编写Mapreduce任务访问hive库中schema数据
1、dirver package com.kangaroo.hadoop.drive; import java.util.Map; import java.util.Properties; import com.kangaroo.hadoop.mapper.AggregateMapper; import com.kangaroo.hadoop.reducer.AggregateReducer; import org.apache.hadoop.conf.Configured; import org.ap
用户1225216
2018-03-05
1.4K1
django使用xlwt导出excel文件
这里只是mark一下导出的方法,并没有做什么REST处理和异常处理。 维护统一的style样式,可以使导出的数据更加美观。 def export_excel(request): # 设置HttpResponse的类型 response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment;filename=user.xls'
用户1225216
2018-03-05
1.3K0
django集成celery之callback方式link_error和on_failure
 在使用django集成celery进行了异步调度任务之后,如果想对失败的任务进行跟踪或者告警,怎么做? 这里提供一个亲测的方法。 1、任务callback 假如你想在任务执行失败的时候,打印错误信息并且发出报警,该怎么搞。有两个方法: (1)link_error (2)on_failure/on_success link_error的方法比较爽,但是我没有亲测过,on_failure的方式,是当任务抛出异常的时候,会触发一些事件,提供给大家代码: 定义一个新类重写Task里的on_success和on_f
用户1225216
2018-03-05
2.1K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档