检测芹菜是否可用并正在运行

2024-04-18 22:40:02 发布

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

我用芹菜和Django一起玩在线游戏。在

基于这个答案,我编写了中间件来检查芹菜是否可用并正在运行: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

但我忘记了答案底部评论中的警告,“我发现上面的两个加起来了回复.芹菜.pidbox每次运行rabbitmq时都要排队。这导致rabbitmq的内存使用量增加

我现在(只过了一天!)注意到偶尔有500个错误从insp = inspect().stats()开始,以OSError: [Errno 4] Interrupted system call结束。在

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


Tags: 中间件django内存答案游戏returnrequeststats
1条回答
网友
1楼 · 发布于 2024-04-18 22:40:02

这感觉很重。最好运行一个异步任务,并在可接受的超时时间内收集结果。这很幼稚,但它不会对资源造成太大的影响,这取决于你经常称之为“你”。。。。。在

@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

相关问题 更多 >