我开始了一个新的Python 3项目,我的目标是下载推文并对其进行分析。由于我将下载来自不同主题的推文,我希望有一个工作人员库,他们必须从推特状态下载给定的关键字,并将其存储在数据库中。我把这个工人命名为fetchers
。
另一种工作者是analyzers
,其功能是分析推文内容并从中提取信息,并将结果存储在数据库中。正如我将要分析的许多推文一样,拥有一批这样的员工也是一个好主意。
我一直在考虑使用RabbitMQ和Celery,但我有一些问题:
- 一般性问题:真的是解决这个问题的好方法吗
- 每个下载任务我至少需要一个
fetcher
工作人员,这可能会运行一整年(实际上是一个重复并持续一年的15分钟周期)。定义一个"无限"任务合适吗 - 我一直在尝试Celery,我使用延迟来启动一些示例任务。我的想法是,我不想经常调用ready()方法来检查任务是否完成。是否可以定义回调?我说的不是芹菜任务回调,而是我自己定义的函数。我一直在找这个,但什么也没找到
- 我想要一个RabbitMQ+Celery服务器,在不同的网络中有工作人员。是否可以定义远程工作者
-
是的,这对我来说是个不错的方法。
-
没有无限的任务。你可能会重新安排一个任务,让它偶尔运行一次。Celery有定期任务,因此您可以安排任务,使其在特定时间运行。你不一定需要芹菜。如果需要,也可以使用cron作业。
-
一旦任务成功完成,就可以调用函数。
from celery.signals import task_success @task_success(sender='task_i_am_waiting_to_complete') def call_me_when_my_task_is_done(): pass
- 是的,你可以在不同的网络上进行远程工作