gpt4 book ai didi

python - 如何与 Cloud Foundry 上的 Celery 通信?

转载 作者:太空宇宙 更新时间:2023-11-03 19:16:47 24 4
gpt4 key购买 nike

我有一个带有 celery 组件的 wsgi 应用程序。基本上,当收到某些请求时,他们可以将相对耗时的任务交给 celery。我在自己设置的服务器上有该产品的工作版本,但我们的客户最近要求我将其部署到 Cloud Foundry。由于 Celery 不能作为 Cloud Foundry 上的服务提供,我们(我和客户的部署团队)决定部署该应用程序两次 - 一次作为 wsgi 应用程序,一次作为独立的 celery 应用程序,共享rabbitmq服务。

应用程序之间的代码是相同的。 wsgi 应用程序响应正确,返回预期的网页。 vmc logs celeryapp 显示 celery 将启动并运行,但是当我向 wsgi 发送应该成为 celery 任务的请求时,它们一旦到达 .delay( ) 声明。它们既不会出现在 celery 日志中,也不会显示为错误。

尝试调试:

  • 我无法在 Cloud Foundry 中使用 celery.contrib.rdb(为 pdb 提供 telnet 接口(interface)),因为每个应用程序均已沙盒化且端口受到限制。
  • 我不知道如何找到这些应用应该共享的特定rabbitmq实例,因此我可以看到它正在传递哪些消息。

更新:为了证实上面关于查找rabbitmq的说法,当我尝试访问应该共享celery任务的节点时,会发生以下情况:

root@cf:~# export RABBITMQ_NODENAME=eecef185-e1ae-4e08-91af-47f590304ecc
root@cf:~# export RABBITMQ_NODE_PORT=57390
root@cf:~# ~/cloudfoundry/.deployments/devbox/deploy/rabbitmq/sbin/rabbitmqctl list_queues
Listing queues ...

=ERROR REPORT==== 18-Jun-2012::11:31:35 ===
Error in process <0.36.0> on node 'rabbitmqctl17951@cf' with exit value: {badarg,[{erlang,list_to_existing_atom,["eecef185-e1ae-4e08-91af-47f590304ecc@localhost"]},{dist_util,recv_challenge,1},{dist_util,handshake_we_started,1}]}

Error: unable to connect to node 'eecef185-e1ae-4e08-91af-47f590304ecc@cf': nodedown
diagnostics:
- nodes and their ports on cf: [{'eecef185-e1ae-4e08-91af-47f590304ecc',57390},
{rabbitmqctl17951,36032}]
- current node: rabbitmqctl17951@cf
- current node home dir: /home/cf
- current node cookie hash: 1igde7WRgkhAea8fCwKncQ==

我该如何调试这个和/或为什么我的任务消失了?

最佳答案

显然,这个问题是由代理和 celery 工作人员之间的死锁引起的,因此工作人员永远不会承认任务已完成,也永远不会接受新任务,但也不会崩溃或失败。任务并没有消失;而是。他们只是永远排队。

更新:死锁是由于我们在安装依赖项的包装脚本内运行 celeryd 造成的。 (字面意思是pip install -rrequirements.txt && ./celeryd -lINFO)。由于 Cloud Foundry 管理进程树的方式,Cloud Foundry 会尝试终止父进程 (bash),这会 HUP celeryd,但最终许多子进程永远不会终止。

关于python - 如何与 Cloud Foundry 上的 Celery 通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com