Python 中长时间运行的轮询和队列处理,最佳工具是什么?
如果这个问题已经有人问过,可以随便关闭或者转发,但我想说说我的情况:
我有一个应用程序,需要完成一些小任务(比如不断查询一个网络服务,直到某件事情完成,然后解析大约1MB的XML数据,并把它放进数据库里)。我想要一个简单的异步队列机制,这样可以在队列中查询要做的工作,执行需要完成的小任务,并且能够灵活地启动多个工作进程,这样这些任务就可以并行处理。(如果有某种事件框架,能让我监听工作完成的情况,那就更好了。)
我相信有工具可以做到这些。我是在描述Twisted吗?我看了一下文档,但不太确定我的问题和他们的框架是怎么对应的,不过我也没花太多时间去研究。那我应该看看Python的多进程库吗?还是说有其他的选择?
2 个回答
0
这个问题听起来很适合用Python自带的多进程模块来解决(从2.6版本开始就有这个模块):http://docs.python.org/library/multiprocessing.html
一个简单的解决办法是创建一个进程池,然后用你的主程序来获取XML数据块。一旦获取到这些数据块,就可以把它们交给进程池去解析和保存。
4
这里提到的是celery。
你可以把它分成两个不同的任务
:一个任务负责定期检查网络服务,另一个任务则负责解析XML数据并保存这些数据。