如何在Python中使用带有gevent或线程的redis构建我的应用程序以完成多个任务

时间:2011-10-13 10:09:44

标签: python multithreading redis celery gevent

我有一个通过redis pubsub实时发送财务报表数据的流程。现在我希望我的Python应用程序处理输入数据(json),例如移动平均等计算。我希望通过redis将结果发送回其他任务(根据第一个任务的结果进行进一步的计算)。此外,我希望每天或每秒定期触发一些任务。有了这个复杂且不可预见的结构问题,我偶然发现了像gevent,Celery或者Threads这样的解决方案。

但我想知道的是,我有什么选择以正确的方式做到这一点?如何通过以最有效的方式执行工作/任务来构建我的redis pubsub?因此,欢迎提出建议,如图书馆(如果您已经使用过任何一个请分享您的经验),技术(Python的结构最佳实践),如何利用redis的pubsub以最佳方式完成工作。

1 个答案:

答案 0 :(得分:2)

如果这些计算中的任何一个计算成本很高并且你在python中进行它们并且你想要可扩展性,那么芹菜就非常有意义。

gevent只会使您的代码在特定情况下更有效,但在可伸缩性方面无法帮助您。如果你使用线程也是如此。

请记住,您可以configure celery在gevent(或eventlet)上运行工作池