gpt4 book ai didi

python - 检测 Celery 是否可用并正在运行

转载 作者:太空狗 更新时间:2023-10-30 01:34:12 26 4
gpt4 key购买 nike

我将 Celery 与 Django 一起用于在线游戏。

我已经编写了中间件来检查 Celery 是否可用并正在运行,基于这个答案:Detect whether Celery is Available/Running

我的代码实际上是这样的:

from celery.task.control import inspect

class CeleryCheckMiddleware(object):

def process_request(self, request):
insp = inspect().stats()
if not insp:
return render(...)
else:
return None

但是我忘记了那个答案底部的评论中的警告,'我发现上面的代码每次运行时都会向 rabbitmq 添加两个 reply.celery.pidbox 队列。这导致 rabbitmq 的内存使用量逐渐增加。”

我现在(仅一天后!)注意到从 insp = inspect().stats() 行开始到 OSError: [Errno 4] 终止的偶尔 500 个错误中断的系统调用

是否有一种内存安全的方法来检查 Celery 是否可用并正在运行?

最佳答案

这感觉很沉重。您最好运行一个异步任务并在可接受的超时时间内收集结果。这很天真,但它不应该对资源产生太大影响,这取决于你调用它的频率......

@app.job
def celery_alive():
return "OK"

def process_request(self, request):
res = celery_alive.apply_async()
try:
return "OK" == res.get(timeout=settings.ACCEPTABLE_TRANSACTION_TIME)
except TimeoutError as e:
return False

关于python - 检测 Celery 是否可用并正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22883332/

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