如何在Python中使用redis和gevent或线程为多个任务构建应用程序
我有一个程序,它通过 Redis 的发布/订阅功能实时发送金融数据。现在我想让我的 Python 应用程序处理这些输入数据(格式是 JSON),比如计算移动平均值等等。计算的结果我希望通过 Redis 发送回去,供其他任务使用(这些任务会根据第一个任务的结果进行进一步计算)。此外,我还想定期触发一些任务,比如每天一次或每秒一次。面对这样复杂且意想不到的结构问题,我遇到了一些解决方案,比如 gevent、Celery 或者直接使用线程。
但我想知道,我有哪些选择可以正确地实现这个功能?我该如何高效地组织我的 Redis 发布/订阅功能,来处理工作和任务?所以,如果你有建议,欢迎分享,比如使用过的库(如果你用过上面提到的,请分享你的经验)、技术(Python 的结构最佳实践),以及如何最好地利用 Redis 的发布/订阅功能来完成这个工作。
1 个回答
2
如果你在Python中进行的某些计算比较复杂,耗时较长,而且你希望你的程序能够处理更多的任务,那么使用Celery就非常合适。
而使用gevent只是在某些特定情况下能让你的代码运行得更快,但在处理更多任务方面,它并不能提供帮助。使用线程也是一样的道理。
请记住,你可以配置Celery,让它在gevent(或eventlet)上运行工作池。