4

要求:

  • 定义具有开始时间t、批量大小s、调用间隔i和应处理的列表的“作业”
  • 从时间t开始,每隔i秒从列表中抓取下一个项目并处理它
  • 作业可以暂停和恢复(用户应该能够告诉作业停止抓取新的列表项进行处理)

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

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

关于如何仅使用 python 设计它的任何建议?

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

1 回答 1

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'
于 2012-09-29T10:24:50.080 回答