首页 > 解决方案 > 如何从python中的子进程返回一个值?

问题描述

我正在使用 django 1.11。在 view.py 文件中,我正在调用这样的子进程:

def twitter_trend(request):
    output = call("python /home/imsaiful/PiroProject/pironews/feed/twitter/trends.py", shell=True)
    print(output)
    return HttpResponse(output, content_type='text/plain')

下面给出了我的 trends.py 文件,该文件由该过程调用

import os
def sum():
    print("hello world")
    a = 5
    b = 3
    return a+b
if __name__ == '__main__':
    sum()

当我调用这个文件时,它通过 HTTP 响应返回 0。

如何在 HttpResponse 中返回 a+b 的加法?

标签: pythondjango

解决方案


你必须使用check_output

def twitter_trend(request):
    output = check_output(["python",  "/home/imsaiful/PiroProject/pironews/feed/twitter/trends.py"])
    print(output)
    return HttpResponse(output, content_type='text/plain')

并将 stdout 用于trends.py:

import os

def sum():
    print("hello world")
    a = 5
    b = 3
    return a+b

if __name__ == '__main__':
    print(sum())

推荐阅读