有Flas背景的工人

2024-03-29 10:08:31 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
1条回答
网友
1楼 · 发布于 2024-03-29 10:08:31

这种方法的缺点是,有很多方法可能会失败,特别是在停止和重新启动flask应用程序时。

  • 您将不得不处理优雅的关闭,以使您的工人有机会完成其当前任务。
  • 有时你的工作人员不会按时停止工作,当你重新启动flask应用程序时,他们可能会在你启动另一个时逗留。

根据您的限制,我建议您采用以下方法:

脚本+crontab

你只需要编写一个脚本来完成你想要的任何任务,cron就会每隔几分钟帮你运行一次。优点:cron将定期为您运行,并在系统启动时启动。缺点:如果任务花费的时间太长,则可能同时运行多个脚本实例。你可以找到这个问题的一些解决方案。

主管

supervisord是处理不同守护进程的一种简洁方法。您可以将其设置为运行应用程序、后台脚本或both,并让它们从服务器启动。唯一的缺点是必须安装supervisord,并确保服务器启动时其守护进程正在运行。

uwsgi

uwsgi是部署flask应用程序的一种非常常见的方法。它几乎没有features可以用来管理后台工作人员。

芹菜

Celery是基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度。我认为对于flask应用程序或任何其他基于python的应用程序,这是调度后台任务的最佳解决方案。但使用它会带来额外的体积。您将至少介绍以下过程: -经纪人(rabbitmq或redis) -工人 -调度程序

您还可以让supervisord来管理上面的所有进程,并在服务器启动时让它们启动。

结论

在您减少进程数量的过程中,我强烈建议使用基于crontab的解决方案,因为它可以为您带来很大的帮助。但请确保后台脚本留下执行跟踪或某种类型的日志。

相关问题 更多 >