Python异步任务队列
2013-06-07 09:02
393 查看
很多场景为了不阻塞,都需要异步回调机制。这是一个简单的例子。
#!/usr/bin/env python # -*- coding: UTF-8 -*- import logging import queue import threading def func_a(a, b): return a + b def func_b(): pass def func_c(a, b, c): return a, b, c # 异步任务队列 _task_queue = queue.Queue() def async_call(function, callback, *args, **kwargs): _task_queue.put({ 'function': function, 'callback': callback, 'args': args, 'kwargs': kwargs }) def _task_queue_consumer(): """ 异步任务队列消费者 """ while True: try: task = _task_queue.get() function = task.get('function') callback = task.get('callback') args = task.get('args') kwargs = task.get('kwargs') try: if callback: callback(function(*args, **kwargs)) except Exception as ex: if callback: callback(ex) finally: _task_queue.task_done() except Exception as ex: logging.warning(ex) def handle_result(result): print(type(result), result) if __name__ == '__main__': t = threading.Thread(target=_task_queue_consumer) t.daemon = True t.start() async_call(func_a, handle_result, 1, 2) async_call(func_b, handle_result) async_call(func_c, handle_result, 1, 2, 3) _task_queue.join()
相关文章推荐
- Python环境下安装使用异步任务队列包Celery的基础教程
- 在python下比celery更加简单的异步任务队列RQ
- 在python下比celery更加简单的异步任务队列RQ 推荐
- python异步任务队列示例
- Python开发【模块】:Celery 分布式异步消息任务队列
- Python环境下安装使用异步任务队列包Celery的基础教程
- python huey 轻量级异步任务队列简介
- python异步任务队列示例
- django与celery实现异步队列任务
- 进程/多线程/同步任务/异步任务/串行队列/并行队列
- Swoole来实现实时异步任务队列
- 变态的libDispatch结构分析-全局队列异步任务处理过程
- GCD介绍。串行队列、并行队列、全局队列、主队列、同步任务、异步任务
- Celery异步任务队列/周期任务+ RabbitMQ + Django
- Python基础-异步任务IO-asyncio
- 变态的libDispatch源码分析-全局队列异步延时任务处理过程-原理与创建ds
- IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别(附代码)
- ios--进程/多线程/同步任务/异步任务/串行队列/并行队列(对比分析)
- 异步任务队列Celery在Django中的使用
- GCD 主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别