Celery与Pyro:Pyro可以替代Celery吗?
我正在学习Celery,想知道Celery和Pyro是不是在做同样的事情?
有人能告诉我Celery能做的事情,Pyro做不到吗?或者反过来呢?
2 个回答
2
上面的回答解释了Pyro和Celery之间的区别。
不过,考虑到这些年来Python发生的各种变化,以及Python的ZeroMQ库和函数序列化的可用性,可能值得看看如何利用ZeroMQ和PiCloud的函数序列化。这为构建分布式系统提供了一种全新的方式。
可以查看链接 jeffknupp.com博客上的示例代码
当然,你可以继续使用Celery来开发分布式任务工作者。而使用Pyro,你可以开发远程过程调用的应用程序。使用Celery和Pyro,你都是在Python的环境中进行这些操作,而ZeroMQ则支持多种语言的实现,并且实现了常见的网络模式,比如发布-订阅、请求-响应、管道等。这为创建与语言无关的可能性打开了大门。
16
在我查看官方网页时,发现Celery和Pyro这两个工具的目的不同,但大家容易搞混是很正常的。
这两个工具的目标都是帮助你进行分布式计算,但方法不一样:Celery是一个分布式任务调度器,也就是说,如果你有一堆任务(这些任务之间没有关联),你可以把它们分散到多个计算机上或者通过网络来处理。
而Pyro的目标是建立一个网络中对象之间的通信桥梁。这意味着,如果你有一个比较大的任务,无法拆分成小的无关任务,但有一堆对象,它们是独立的,但通常需要互相了解一些信息,那么Pyro可以让这些对象之间进行通信,这样你就可以在计算机网络中分配这些对象来完成任务。
你提到这个问题时用了Django标签,所以值得一提的是,发送到网络应用的请求可以看作是一堆(随着并发增加可能会变得很大)无关的任务,因此Celery可能正是你需要的工具。