python异步任务队列示例
2014-04-01 00:00
891 查看
很多场景为了不阻塞,都需要异步回调机制。这是一个简单的例子,大家参考使用吧
#!/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) async_call(func_c, handle_result, 1, 2, 3, 4) _task_queue.join()
相关文章推荐
- python异步任务队列示例
- Python异步任务队列
- 在python下比celery更加简单的异步任务队列RQ 推荐
- python huey 轻量级异步任务队列简介
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- Python开发【模块】:Celery 分布式异步消息任务队列
- Python环境下安装使用异步任务队列包Celery的基础教程
- Python环境下安装使用异步任务队列包Celery的基础教程
- 在python下比celery更加简单的异步任务队列RQ
- PHP使用swoole来实现实时异步任务队列
- var和let在异步任务队列中的执行差异
- python数据结构与算法 16 队列应用之 打印任务
- Android 异步任务队列实现
- python多队列示例
- 异步任务AsyncTask控制音乐播放示例
- 异步任务队列Celery在Django中的使用
- Python Django Celery 实现异步任务(二)使用rabbitmq 作为broker
- 分布式任务分发框架Gearman测试、性能监控、队列持久化【python 实例】
- [PhalApi实战篇(1)]Redis队列处理异步任务
- Java Design Demo -简单的队列-异步多任务队列(java android)