python 创建 celery 任务作业

发布于 2024-11-04 15:55:10 字数 103 浏览 0 评论 0原文

假设我有一个 python 程序,我想使用 celery / rabbigmq 最多并行运行 10 次,如果某些进程完成,我想了解它,以便我可以启动一个新进程。我怎样才能这样做?一些例子会很好

lets say i have a python programm whitch i want to run always max 10 times in parallel using celery / rabbigmq and if some of the process finish i want to know about it so i can start a new process. how can i do so? some examples would be nice

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

身边 2024-11-11 15:55:10

举个例子很困难,因为消息传递有点复杂,但你基本上可以做的是:

  • 将你的程序重写为一个任务,或者编写一个使用子进程调用你的程序的任务,
  • 配置 celery 让 10 个工作人员
  • 执行你需要的任意数量的任务为了完成你的工作,Celery 会将它们添加到队列中
  • Celery 将为你完成剩下的工作,一旦一项任务完成,就会启动另一项任务,直到队列为空。

或者,如果你想在一项任务完成后手动启动一项任务,你可以可以配置 Celery 在完成后发送消息(我还没有尝试过,但看看 CELERY_RESULT_BACKEND)然后您可以使用这些消息并开始您的任务。

Giving an example is difficult as messaging is a bit complex, but what you can do basically is:

  • rewrite your program to be a task or write a task that calls your program using subprocess
  • configure celery to have 10 workers
  • execute as many tasks as you need to get your job done, Celery will add them to its queue
  • Celery will do the rest for you, once a task finished, another one is started till the queue is empty

Alternatively, if your want to start a task manually after one finished, you can configure Celery to send a message after its finished (I didn't try it yet, but have a look at CELERY_RESULT_BACKEND) You can then consume these messages and start your task.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文