【问题标题】:Creating a subprocess in Django view and return the result to the client在 Django 视图中创建子进程并将结果返回给客户端
【发布时间】:2014-07-22 06:28:57
【问题描述】:

在我的 Django 应用程序中,我必须运行一个子进程来完成一些工作并将结果返回给客户端。我正在这样做:

def get(self, request, id=None ):
    pid = os.fork()
    if not pid :
        # child process
        result = do_some_work()
        return Response(result)
    else :
        # I don't know what to put here
        # I tried this
        time.sleep(60)

我在子流程中做的工作不需要很长时间。我的代码不起作用,我试图在父进程代码中添加任何内容,但这不起作用,因为该函数不返回任何内容。所以我虽然我会等到子进程返回结果。它也不起作用,我得到IOError: failed to write data

我该如何解决这个问题?或者我的问题有什么更好的解决方案?

【问题讨论】:

  • 为什么你认为它会帮助我?它只是解释了fork 的工作原理,这不是我需要的。
  • 您的问题到底是什么?如果你正在做的工作不需要很长时间,你为什么要首先分叉?
  • @ThomasFenzl 我必须在子进程中执行代码,这是我用来完成工作的软件的约束。我的问题是我的视图没有返回结果。

标签: python django subprocess django-rest-framework


【解决方案1】:

您需要的是卸载处理并使其异步。你不应该像在 Django 中那样做。

以下是可以帮助您的库的一个很好的比较:https://www.djangopackages.com/grids/g/workers-queues-tasks/

【讨论】:

  • 请进一步解释您的答案。我不明白该怎么做你的建议。
  • 每个库都有大量文档来解释如何做你想做的事情。这个网站不是为了让别人为你写代码。
  • 我不是要你为我写代码。如果您回答问题,请以更好的方式回答,否则只需写评论或最好不要回答。我看不出我的要求与您的建议之间有任何关系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2016-09-19
相关资源
最近更新 更多