哪种方式最适合 运行 后台进程?
Which way is the best for running background processes?
在服务器端:我需要一种在后台频繁执行某些任务并在特定时间启动它的方法。
我的编程语言是 Python 用于后端(Sanic Framework),VueJs 用于前端,MongoDB 作为主数据库和 Redis 用于缓存。
此外,我正在使用 Docker 容器(docker-compose)。
另外,我之前使用过 Celery,但我想知道什么是保证其稳定可靠的最佳生产解决方案。
在客户端:对于提到的问题,我需要在服务器端运行它,有时我需要运行客户端上的作业调度程序,嵌入式设备,如Raspberry Pi 可以 运行 Python 或 JavaScript.
那么,您对这些用例有哪些解决方案?
在 python 中在后台启动一个新进程就像调用 os.fork()
一样简单。有关综合示例,请参阅 https://python-course.eu/forking.php
编辑:
对于功能齐全的解决方案,我建议如上所述分叉一个后台进程,然后使用 https://github.com/dbader/schedule 这样的库在该后台进程中按预定的时间间隔执行作业。
在生产中我们有长任务和短任务运行,我们的 Celery 集群每天总共执行多达 6M 任务,所以我自然会推荐 Celery。它是为此目的而制作的,如果您是 Python 开发人员,您还有另一个选择 Celery 的理由。最后,Celery 是我所知的唯一 Python 具有 HA 调度程序 (https://github.com/mixkorshun/celery-beatx and https://github.com/sibson/redbeat) 的任务队列系统。
还有两个 (Python) 项目应该被提及作为 Celery 的替代品 - Huey (https://github.com/coleifer/huey) and Apache Airflow (https://github.com/apache/airflow)。
我是 Sanic 的核心开发者之一。我同意芹菜是一个不错的选择的其他答案。对于任何需要更轻量级解决方案的人,我有一个 post 关于仅在 Sanic 内部的替代方法:https://community.sanicframework.org/t/how-to-use-asyncio-queues-in-sanic/166/4
在服务器端:我需要一种在后台频繁执行某些任务并在特定时间启动它的方法。 我的编程语言是 Python 用于后端(Sanic Framework),VueJs 用于前端,MongoDB 作为主数据库和 Redis 用于缓存。 此外,我正在使用 Docker 容器(docker-compose)。 另外,我之前使用过 Celery,但我想知道什么是保证其稳定可靠的最佳生产解决方案。
在客户端:对于提到的问题,我需要在服务器端运行它,有时我需要运行客户端上的作业调度程序,嵌入式设备,如Raspberry Pi 可以 运行 Python 或 JavaScript.
那么,您对这些用例有哪些解决方案?
在 python 中在后台启动一个新进程就像调用 os.fork()
一样简单。有关综合示例,请参阅 https://python-course.eu/forking.php
编辑:
对于功能齐全的解决方案,我建议如上所述分叉一个后台进程,然后使用 https://github.com/dbader/schedule 这样的库在该后台进程中按预定的时间间隔执行作业。
在生产中我们有长任务和短任务运行,我们的 Celery 集群每天总共执行多达 6M 任务,所以我自然会推荐 Celery。它是为此目的而制作的,如果您是 Python 开发人员,您还有另一个选择 Celery 的理由。最后,Celery 是我所知的唯一 Python 具有 HA 调度程序 (https://github.com/mixkorshun/celery-beatx and https://github.com/sibson/redbeat) 的任务队列系统。
还有两个 (Python) 项目应该被提及作为 Celery 的替代品 - Huey (https://github.com/coleifer/huey) and Apache Airflow (https://github.com/apache/airflow)。
我是 Sanic 的核心开发者之一。我同意芹菜是一个不错的选择的其他答案。对于任何需要更轻量级解决方案的人,我有一个 post 关于仅在 Sanic 内部的替代方法:https://community.sanicframework.org/t/how-to-use-asyncio-queues-in-sanic/166/4