Skip to main content

Event loop engine.

Project description

Eloope

事件循环引擎, 主要功能:

1. 异步执行, 解决io密集型任务
2. 支持搭建多进程, 分布式运行
3. 支持断点续爬
4. 提供日志系统

目录:

安装

pip install eloope --upgrade

使用

  • 首行导入 eloope 模块

单进程

from eloope import engine, get_current_engine, logger

def task(code):
    logger.info(f'{get_current_engine().name} --- {code}')

engine.add_tasks(fn=task, param_groups=[[code] for code in range(100)])
engine.run()
  • 单进程 demo: spider_dili.py
  • 通过 get_current_engine 函数获得当前运行engine

多进程

开启服务

from eloope import run_server

run_server(load_file=None, dump_path='.', log_path=None, host='localhost', port=6991)
  • load_file: 加载任务文件
  • dump_path: 任务文件保存路径
  • log_path: 日志保存路径, 为 None 时将不保存日志文件

运行客户端

from eloope import Manager, get_current_engine, logger

def task(code):
    logger.info(f'{get_current_engine().name} --- {code}')

if __name__ == '__main__':
    # Manager 创建多进程
    manager = Manager(engine_names=['engine1', 'engine2'], host='localhost', port=6991)
    manager.add_tasks(fn=task, param_groups=[[code] for code in range(100)])
    manager.run()
  • 多进程客户端需要在 if __name__ == '__main__': 语句中启动
  • 多进程 demo: multi_progress.py

分布式

  • 多进程 相同, 部署项目文件, 连接同一服务

命令式

>>> eloope <command> <host=localhost> <port=6991>
command 说明
stop 停止向客户端发送任务
start 开始向客户端发送任务
save 保存当前服务器上的任务
quit 强制退出服务和所有客户端
task_total 任务总数量
task_count 任务当前数量
start_time 服务开始时间
connect 连接服务

日志

from eloope import logger

logger.info('hello world!')
logger.debug('hello world!')
logger.result('hello world!')
logger.warning('hello world!')
logger.error('hello world!')
logger.system('hello world!')
  • 导入 eloope 模块将会屏蔽掉其他模块的日志系统

setting

from eloope import setting

# 客户端运行中连接失败回调函数
# 参数: engine(Engine 实例), repeat_count(重复连接次数)
# 返回: True(重新连接), False(断开连接退出程序)
setting.connection_interrupt_callback = connection_interrupt_callback

setting.send_interval = 1  # 客户端连接服务器间隔
setting.log_path = None  # 本地日志保存路径

# 日志级别过滤
setting.log_filter = ('info', 'debug', 'result', 'warning', 'error', 'system')

API

Engine(name='engine', size=50)

  • name: 名称标识
  • size: 任务池大小
Attribute 说明
name 名称
is_run 运行状态
task_count 任务数量
free_count 任务池剩余空间
task_pool 任务池
run() 阻塞运行
add_task(fn, *params) 添加单个任务
add_tasks(fn, param_groups) 添加多个任务, 同一个函数不同参数

Manager(engine_names=None, host='localhost', port=6991)

  • engine_names: engine 名称标识列表 (每一个 engine 都为单独进程)
  • host: 服务器地址
  • post: 服务器端口
Attribute 说明
create_engines(engine_names, size=50) 创建多个 engine
add_task(fn, *params) 添加单个任务
add_tasks(fn, param_groups) 添加多个任务, 同一个函数不同参数
run() 非阻塞运行

下次更新内容

1. 添加任务执行的优先级.
2. 可以指定 enigne 执行任务.
3. 添加任务执行失败自定义回调函数.
4. 可以选择同步或异步 engine 类型.
5. 重新设计日志系统
6. 添加 UI 控制面板
7. 添加测试文件

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eloope-2019.6.8.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

eloope-2019.6.8-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file eloope-2019.6.8.tar.gz.

File metadata

  • Download URL: eloope-2019.6.8.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for eloope-2019.6.8.tar.gz
Algorithm Hash digest
SHA256 7b85d7cd31fda56a1027b6a5667ad93d5f4325f6cd43f3e6d423b2165a7d786a
MD5 348ed411efae2a058c89e5bbf5637a10
BLAKE2b-256 d7609c9a529c2dc327a5b1de0f08505e3297c56773a8cf5b105d511cb41df48f

See more details on using hashes here.

File details

Details for the file eloope-2019.6.8-py3-none-any.whl.

File metadata

  • Download URL: eloope-2019.6.8-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for eloope-2019.6.8-py3-none-any.whl
Algorithm Hash digest
SHA256 941de56b9909891825e134264066c982e20ee5c5548c39f110e631da6d8af962
MD5 5b8478345848c809e418a82e052605b1
BLAKE2b-256 3c48612c93617b67cae8bcad45ecdde26601c8383b9babf82475c19655bc4883

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page