2012-09-29 47 views
4

要求:Python的Web应用程序与后台工作线程

  • 定义的“工作”有开始时间,批量大小小号,调用间隔列表应处理
  • 开始时间t接下来抓取s项目来自列表秒并对其进行处理
  • 工作可以暂停和恢复(用户应该能够告诉工作停下来处理把握新的列表项)

瓶将用于Web应用程序。很显然,我需要一些后台进程/线程来定期执行处理代码。

由于状态将会保存到数据库中,所以我能想到的最简单的方法是定义一个cronjob,它将定期执行用于检查活动作业并执行处理的python脚本。

有关如何仅使用python进行设计的任何建议?

  • 启动另一个将定期检查和执行活动作业的python进程?
  • 从Flask产生一个工作线程?
  • ...?

回答

4

我强烈建议你使用像Redis或RabbitMQ这样的排队机制。 Flask将扮演制片人的角色,而你的“工作人员”将会消耗和处理。

将这些工具中的任何一个设置起来都不像您期望的那么令人生畏。

sudo apt-get install redis-server 
sudo apt-get install python-pip 
sudo pip install redis 

你烧瓶的应用程序作为一个制片人

>>> from redis import Redis 
>>> r = Redis() 
>>> r.lpush('task_queue', 'task1') 
1L 

而你的“工作人员”消耗和流程异步:

>>> r.rpop('task_queue') 
'task1' 
+1

我更感兴趣的是如何实现*消费者*和整合它与网络应用程序。对这个话题有什么想法? – 1osmi