【问题标题】:Access Celery's subprocess stdout and stderr in my Django app在我的 Django 应用程序中访问 Celery 的子进程 stdout 和 stderr
【发布时间】:2017-05-29 00:49:58
【问题描述】:

我将 Celery 放入我的 Django 应用程序中,以便其他两个 python 程序可以通过执行 subprocess 方法处理来自我的 Django 应用程序的输入。 我的问题是如何访问子流程的输出?那时我只制作了一个 python 程序,我通过 stdout 和 stderr 访问日志文件(两个应用程序的输出)。当我在 Django 中使用 Celery 时,这是否相同? CELERY_RESULT_BACKEND 的值(如果我应该在这里分配我的 Django 应用程序的数据库)是否受日志文件的影响?

到目前为止,我所做的是:

  1. 通过我的tasks.py中的子进程访问这两个应用程序

  2. 我现在将代理的数据库 Redis 分配为我的 CELERY_RESULT_BACKEND 的数据库。我的计划是获取日志文件,然后将它们保存到我的 Django 应用程序的数据库中,以便我可以访问该数据库。

你能提供一些帮助吗?

【问题讨论】:

    标签: django python-2.7 celery django-mysql


    【解决方案1】:

    通常,您只关心任务结果,即 celery 任务的返回值,它至少会在 result_expires 时间(通常为 1 天)中存储在您的 result_backend 中。因此,如果您想访问任何特定任务的结果,只需使用任务 ID 即可。

    【讨论】:

    • 那么返回值就在那里。如果您正在寻找调试语句以及何时收到任务等,您可能无法获得该信息。但您可以访问 Result/Task 元数据和 Task 返回值。
    • 啊,好的,我现在明白了。如果这不起作用,也许我可以控制stdout和stderr的值。 :D 谢谢!
    • ** 我删除了我的第一条评论,抱歉,之前没有看到您的回复。感谢您的回复!
    猜你喜欢
    • 2023-04-06
    • 2013-08-26
    • 2015-08-18
    • 2011-07-07
    • 2020-06-23
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多