info

# 使用Redis实现延时任务(二)

巧了我就是萌 提交于 2019-12-06 01:10:13
前提 前一篇文章通过 Redis 的有序集合 Sorted Set 和调度框架 Quartz 实例一版简单的延时任务,但是有两个相对重要的问题没有解决: 分片。 监控。 这篇文章的内容就是要完善这两个方面的功能。前置文章: 使用Redis实现延时任务(一) 。 为什么需要分片 这里重新贴一下查询脚本 dequeue.lua 的内容: -- 参考jesque的部分Lua脚本实现 local zset_key = KEYS[1] local hash_key = KEYS[2] local min_score = ARGV[1] local max_score = ARGV[2] local offset = ARGV[3] local limit = ARGV[4] -- TYPE命令的返回结果是{'ok':'zset'}这样子,这里利用next做一轮迭代 local status, type = next(redis.call('TYPE', zset_key)) if status ~= nil and status == 'ok' then if type == 'zset' then local list = redis.call('ZREVRANGEBYSCORE', zset_key, max_score, min_score, 'LIMIT', offset,

如何使用 Docker 组件开发 Django 项目?

倾然丶 夕夏残阳落幕 提交于 2019-12-06 00:50:20
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。自2013年发布以来,无论是从 Github 上的代码活跃度,还是 Redhat 在 RHEL6.5 中集成对 Docker 的支持, 就连 Google 的 Compute Engine 也支持 Docker 在其之上运行。火热程度可见一斑! 本篇文章详细介绍了如何通过 Docker Machine 「系统配置」和 Docker Compose 「多容器应用组装」 提供堆栈完成 Postgres, Redis 和 Django 项目相结合的开发。 而在最后,该堆栈将包括如下每个服务的单独的容器: 一个 Web/ Django 的容器 一个 Nginx 的容器 一个 Postgres 的容器 一个 Redis 的容器 一个 Data 容器 ##本地设置 使用 Docker「v1.6.1」版本我们将使用到 Docker Compose 「v1.2.0」编排一个多容器组成的应用程序,使用 Docker Machine「v0.2.0」创建本地和云的 Docker 主机。 按照指示,分别安装 Docker Compose 和 Machine,然后测试安装结果: $ docker-machine --version docker

Linux堆的一些基础知识

吃可爱长大的小学妹 提交于 2019-12-06 00:49:07
目录 堆的概述 什么是堆 堆的基本操作 堆操作背后的系统调用 堆的相关数据结构 微观结构 malloc_chuck chunk相关宏 bin 宏观结构 arena heap_info malloc_state 深入了解堆实现 堆初始化 malloc_consolidate() 创建堆 unlink 申请内存块 _libc_malloc _int_malloc 释放内存块 _libc_free 内容来源 堆的概述 什么是堆 堆用来在程序运行时动态的分配内存,对其实就是虚拟空间里从地址向高地址增长的连续的线性区域。 堆的基本操作 void *malloc(unsigned int size):作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。 void free(void *ptr):释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。 堆操作背后的系统调用 brk():将数据段(.data)的最高地址指针_edata往高地址推。(从堆头开始,参数为地址) mmap():在进程的虚拟地址空间中(堆和栈中间,称为文件映射区域的地方)找一块空闲的虚拟内存。(分配大于128k) sbrk():将地址指针往高地址推。(从当前指针位置开始,参数为指针增量)

Celery异步任务与定时任务

笑着哭i 提交于 2019-12-05 23:48:59
一、什么是celery Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 二、Celery架构 Celery的架构由三部分组成,消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成。 2.1 消息中间件 Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等 2.2 任务执行单元 Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。 2.3 任务结果存储 Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP,Redis等 2.4 版本支持情况 Celery version 4.0 runs on     Python ❨2.7, 3.4, 3.5❩     PyPy ❨5.4, 5.5❩ This is the last version to support Python 2.7, and from the next version (Celery 5.x) Python 3.5 or newer is required. If you’re running an

分布式异步任务队列神器-Celery

瘦欲@ 提交于 2019-12-05 23:48:18
最近研究了下异步任务神器-Celery,发现非常好用,可以说是高可用,假如你发出一个任务执行命令给 Celery,只要 Celery 的执行单元 (worker) 在运行,那么它一定会执行;如果执行单元 (worker) 出现故障,如断电,断网情况下,只要执行单元 (worker) 恢复运行,那么它会继续执行你已经发出的命令。这一点有很强的实用价值:假如有交易系统接到了大量交易请求,主机却挂了,但前端用户仍可以继续发交易请求,发送交易请求后,用户无需等待。待主机恢复后,已发出的交易请求可以继续执行,只不过用户收到交易确认的时间延长而已,但并不影响用户体验。 Celery 简介 它是一个异步任务调度工具,用户使用 Celery 产生任务,借用中间人来传递任务,任务执行单元从中间人那里消费任务。任务执行单元可以单机部署,也可以分布式部署,因此 Celery 是一个高可用的生产者消费者模型的异步任务队列。你可以将你的任务交给 Celery 处理,也可以让 Celery 自动按 crontab 那样去自动调度任务,然后去做其他事情,你可以随时查看任务执行的状态,也可以让 Celery 执行完成后自动把执行结果告诉你。 应用场景: 高并发的请求任务。互联网已经普及,人们的衣食住行中产生的交易都可以线上进行,这就避免不了某些时间极高的并发任务请求,如公司中常见的购买理财、学生缴费

ATM_购物车

笑着哭i 提交于 2019-12-05 23:40:34
ATM+购物车 目录 ATM购物车 一、一个项目是如何从无到有的 二、项目需求 三、项目开发 random.txt 项目说明文件 start.py 项目启动文件 conf--------setting.py 系统环境变量配置 core------src.py 业务核心逻辑 db-----db_hander.py 真实数据层 interface-----admin_interface.py 管理员接口 interface----bank_interface.py 银行接口 interface----shoping_interface.py 购物接口 interface----user_interface.py 用户接口 lib----common.py 公共功能 ATM购物车 一、一个项目是如何从无到有的 1.需求分析 注册,登陆,查看余额,支付,购物车, 提现,还款,转账,查看流水,注销,管理员, 查看购物车,登陆认证装饰器, 密码加密 2.程序的架构设计 三层架构: 用户功能层: 接收用户输入的内容,展示给用户的内容. 小的逻辑判断,例如两次密码是否一致. 接口层: 处理业务逻辑. 数据处理层: 对数据进行增删查改. 3.分任务开发 4.测试 5.上线运行 二、项目需求 1.注册 2.登录 3.转账 4.查询余额 5.还款 6.取款 7.查看流水 8.购物 9.查看购买商品 10

Fastreport.net绑定参数 数据打印

风流意气都作罢 提交于 2019-12-05 23:36:25
一、引入Fastreport.dll 此处忽略 二、创建report.frx文件 如果需要的可以加入公众号“办公好技巧”,找我要个文件。 三、绑定数据 1.设置变量参数,例如:subject 2.创建数据源 添加sql语句 编辑语句: SELECT D.train_info_id, D.train_edition, D.train_subject, D.train_user, D.train_data, D.train_address, D.train_class_hour, D.train_scope, D.train_content, D.train_count, D.train_inputuser, D.train_part_fuzeren, D.train_kaohe_type, D.train_result, D.train_confirm_user, D.trainner_confirm_date, D.username, D.partname, D.confirm_tag, D.train_list_id FROM dbo."View_userlist_train_info" D where D.train_subject= @subject ; 后面subject就是刚才设置的参数,保持一致哦。 绑定参数来源 完成 来源: https://my.oschina

PHP实现QQ第三方登录代码

我是研究僧i 提交于 2019-12-05 22:38:21
前言: PHP实现QQ快速登录,罗列了三种方法 方法一: 面向过程,回调地址和首次触发登录写到了一个方法页面【因为有了if做判断】, 方法二,三: 面向对象 1.先调用登录方法,向腾讯发送请求, 2.腾讯携带本网站唯一对应参数OPENID,ACCESSTOKEN,返回到对应回调页面, 3.回调页面接受到腾讯的参数后,通过这个两个参数,再发出对应的请求,如查询用户的数据。 4.腾讯做出对应的操作,如返回这个用户的数据给你 即使你没看懂,也没关系,按照我下面的流程来,保证你可以实现。 前期准备: 使用人家腾讯的功能,总得和人家打招呼吧! QQ互联首页:http://connect.qq.com/ 进入网址后,按如下操作来: 一.进入官网 二.申请创建【网站】应用 三.按要求填写资料 注意网站地址:填写你要设置快速登录的网址,eg:http://www.test.com; 回调地址:填写你发送QQ快速登陆后,腾讯得给你信息,这个信息往此页面接受。eg:http://www.test.com/accept_info.php 【详细的申请填写,请见官方提示,这里不做赘述】 四.申请成功后,完善信息 最终要求,获得APP_ID ,APP_KEY 五.代码部分: 在你对应的PHP文件内写入,如下 方法一, 面向过程法 使用方法:配置$app_id,$app_secret,$my_url后

Python中的logging模块就这么用

一曲冷凌霜 提交于 2019-12-05 22:22:52
Python中的logging模块就这么用 1、日志 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。 ERROR:更严重的问题,软件没能执行一些功能 CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行 这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。 2、日志输出 有两种方式记录跟踪,一种输出控制台,另一种是记录到文件中,如日志文件。 2.1、将日志输出到控制台 比如,编写一个叫做log.py的文件,如下: # coding=utf-8 __author__ = 'liu.chunming' import logging logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') #

Spark常见问题汇总

﹥>﹥吖頭↗ 提交于 2019-12-05 21:13:44
注意:如果Driver写好了代码,eclipse或者程序上传后,没有开始处理数据,或者快速结束任务,也没有在控制台中打印错误,那么请进入spark的web页面,查看一下你的任务,找到每个分区日志的stderr,查看是否有错误,一般情况下一旦驱动提交了,报错的情况只能在任务日志里面查看是否有错误情况了 1 、 Operation category READ is not supported in state standby org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException): Operation category READ is not supported in state standby 此时请登录Hadoop的管理界面查看运行节点是否处于standby 如登录地址是: http://192.168.50.221:50070/dfshealth.html#tab-overview 如果是,则不可在处于StandBy机器运行spark计算,因为该台机器为备分机器 2 、配置 spark.deploy.recoveryMode 选项为 ZOOKEEPER 如果不设置spark.deploy.recoveryMode的话,那么集群的所有运行数据在Master重启是都会丢失