从Django远程运行python脚本

问题描述 投票:0回答:1

在运行Raspian的Pi3,Apache服务器上,我有一个Django App。

我正在尝试从Django运行python文件。如果我通过SSH进入我的Pi并输入“ python test_data.py”,则可以正常运行。我以“ pi”用户身份SSH登录]

test_data.py就是这个。

output = "success!"
print(output)

urls.py

url(r'^mygame/$', views.my_game),

views.py文件,我有以下

from subprocess import PIPE, run

def my_game(request):
    command = ['sudo', 'python test_data.py']
    result = run(command, stdout=PIPE, stderr=PIPE, shell=True, universal_newlines=True)
    return render(request, 'rungame.html',{'data1':result})

当通过网络浏览器调用/ mygame时,这是我在rungame.html中打印的结果,所以我知道它称为test_data.py。看来是权限问题?我不明白以下含义。有人可以告知这是否是权限问题,如何解决?

CompletedProcess(args=['sudo', 'python mygame.py'], returncode=1, stdout='', stderr='usage: sudo -h | -K | -k | -V\
nusage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]\
nusage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user]\n [command]\
nusage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p\n prompt] [-u user] [VAR=value] [-i|-s] [<command>]\
nusage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p\n prompt] [-u user] file ...\n')

谢谢

添加的信息:创建mygame.py来测试概念

import pygame
import sys

pygame.init()

WIDTH = 800
HEIGHT = 600

screen = pygame.display.set_mode((WIDTH, HEIGHT))
background = pygame.image.load('background1.png')
pygame.display.set_caption("Skee-Ball")

print("test")
game_over = False

while not game_over:
    screen.blit(background, (0, 0))
    pygame.display.update()
    for event in pygame.event.get():
        print(event)
        if event.type == pygame.QUIT:
            sys.exit()
python django
1个回答
1
投票

不要使用子进程来调用脚本。您有一个python脚本,使其成为一个函数并将其导入Django。然后在您的views.py中调用该函数。

test_data.py

def my_function():
    output = "success!"
    return output

views.py

from test_data import my_function

def my_game(request):
    result = my_function()
    return render(request, 'rungame.html',{'data1':result})

test_data.py脚本与views.py放在同一目录中。

© www.soinside.com 2019 - 2024. All rights reserved.