把 celery 进程部署在 k8s 的时候如何做健康检查?
一般的 fastapi、flask 可以使用 HTTP 访问判断是不是健康,但是 celery 没有这样的接口
celery 进程可以通过以下方式进行健康检查:
ping
方法检查 AMQP 连接是否正常:from celery import Celeryapp = Celery('myapp', broker='pyamqp://guest@localhost//')app.ping() # 如果连接正常,将返回 True
from celery import Celeryapp = Celery('myapp', broker='pyamqp://guest@localhost//')try: app.send_task('tasks.add', args=[4, 4])except Exception as e: # 处理异常,例如记录日志或重新连接 print(f"Error occurred: {e}")
在 Kubernetes 中进行 Celery 进程健康检查的方法如下:
CMD [ "python", "-c", "import celery; celery.ping()" ]
apiVersion: v1kind: Podmetadata: name: my-celery-podspec: containers: - name: my-celery-container image: my-celery-image ports: - containerPort: 5672 # AMQP 端口号 livenessProbe: httpGet: path: /health # 健康检查路径,可以自定义为其他路径 port: 8000 # 健康检查端口号,可以根据实际情况调整 initialDelaySeconds: 10 # 延迟时间,可以根据实际情况调整 periodSeconds: 5 # 检查间隔时间,可以根据实际情况调整
问题内容: 我希望我的python应用程序能够知道另一侧的套接字何时被删除。有办法吗? 问题答案: 这取决于您所说的“丢弃”。对于TCP套接字,如果另一端通过close()或进程终止来关闭连接,则可以通过读取文件结尾或读取错误来找出错误,通常将errno设置为“对等”由您的操作系统决定。对于python,您将读取长度为零的字符串,否则将导致套接字。尝试从套接字读取或写入时将引发错误。
SOFABoot 为 Spring Boot 的健康检查能力增加了 Readiness Check 的能力。如果你需要使用 SOFA 中间件,那么建议使用 SOFABoot 的健康检查能力的扩展,来更优雅的上线应用实例 引入健康检查扩展 要引入 SOFABoot 的健康检查能力的扩展,只需要引入以下的 Starter 即可: <dependency> <groupId>com.alipay
问题内容: 我遇到了Java套接字API的一些问题。我正在尝试显示当前连接到我的游戏的玩家数量。很容易确定播放器何时连接。但是,似乎似乎很难确定玩家何时使用套接字API断开连接。 呼叫已断开远程似乎总是返回一个插座上。同样,调用已远程关闭的套接字似乎总是会返回。我读过要真正确定套接字是否已关闭,必须将数据写入输出流,并且必须捕获异常。这似乎是处理这种情况的一种非常不干净的方法。我们只需要不断地通过
问题内容: 使用控制台,如何确定sidekiq是否已连接到Redis服务器?我希望能够做这样的事情: 问题答案: 您可以使用Sidekiq提供的Redis信息: 从Sidekiq的Sinatra状态应用程序中获取了它。
问题内容: 基本上,我有一个服务器循环,用于管理与一个单独客户端的连接。在循环的某一时刻,如果存在ClientSocket,它将尝试读取以检查客户端是否仍然连接: 问题是,一旦创建了套接字,应用程序将挂起读取,我假设正在等待永远不会到来的数据,因为客户端永远不会发送到服务器。在此之前还可以,因为正确处理了断开连接(客户端断开连接后读取将最终失败),并且循环将尝试重新建立连接。但是,我现在添加了上面
本文向大家介绍如何判断是函数还是方法?相关面试题,主要包含被问及如何判断是函数还是方法?时的应答技巧和注意事项,需要的朋友参考一下 看他的调用者是谁,如果是类,就需要传入一个参数self的值,这时他就是一个函数, 如果调用者是对象,就不需要给self传入参数值,这时他就是一个方法 print(isinstance(obj.func, FunctionType)) # False print(isi