How APScheduler works - part 4 (executor)

APScheduler 支持如下几种 executor asyncio debug gevent processpool threadpool tornado twisted executor 负责 Job 的执行,本文这里选线程池的实现来进行说明 首先来看基类 BaseExecutor # executors/base.py class BaseExecutor(six.with_metaclass(ABCMeta, »

How APScheduler works - part 3 (trigger)

trigger 用于处理 job 的触发逻辑,对比如 cronjob, interval 等执行周期进行抽象。APScheduler 默认提供了三种内置的 trigger,他们分别是 date: use when you want to run the job just once at a certain »

How APScheduler works - part 2 (job_store)

APScheduler 默认提供了如下几种 job_store in-memory mongodb redis rethinkdb sqlalchemy zookeeper 所有的 jobstore 共同继承 jobstore/base.py 中的 BaseJobStore 基类。 本文这里简要的通过 redis jobstore 来举例。由上一节可知,job_store »

How APScheduler works - part 1 (scheduler)

Basic Concepts APScheduler 是一个任务调度框架。它由以下的组件所组成: executor: 任务执行组件,提供不同的运行方式(线程、进程) jobstore: 任务持久化组件,提供不同的持久化后端 scheduler: 任务调度组件,提供不同的调度器(tornado/background) trigger: 任务触发器组件,可以使用 cronjob 也可以直接指定 interval 一个简单的使用示例: import »

urllib3 源码分析 II -ConnectionPool

本文分析 urllib3 的连接池设计。所使用代码版本为 1.23,commit sha 7c216f433e39e184b84cbfa49e41135a89e4baa0 续上文 urllib3 源码分析 I - PoolManager 这里以 HTTP 协议为例,其创建的是 HTTPConnection 实例 # urllib3/connectionpool.py class HTTPConnectionPool( »

urllib3 源码分析 I - PoolManager

本文通过 urllib3 来分析 PoolManager 的设计。所使用代码版本为 1.23,commit sha 7c216f433e39e184b84cbfa49e41135a89e4baa0 urllib3 自带连接池,通过 PoolManager 进行管理。默认创建 10 个连接池 # urllib3/poolmanager.py class PoolManager(RequestMethods): proxy »

切换的魔法 - greenlet

本文所使用的 greenlet 为 0.4.14, commit sha f946722143a9bd65764204202fe0c39fbb526d15 Introduction of greenlet 首先来体验一下 greenlet 的执行流程 from greenlet import greenlet def test1(): print(12) gr2.switch() print( »