首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Django远程运行游戏脚本

从Django远程运行游戏脚本
EN

Stack Overflow用户
提问于 2020-01-04 16:16:19
回答 1查看 1.6K关注 0票数 0

在我运行拉斯宾的Pi3服务器上,我有一个Django应用程序。

我正在尝试从Django运行一个python文件。

如果我将SSH放入我的Pi中并输入"python test_data.py",它就运行得很好。我以用户"pi“的身份登录

test_data.py就是这样。

代码语言:javascript
复制
output = "success!"
print(output)

urls.py

代码语言:javascript
复制
url(r'^mygame/$', views.my_game),

views.py文件我有以下内容

代码语言:javascript
复制
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通过web浏览器被调用时,这是我在rungame.html中得到的结果,所以我知道它称为test_data.py。这似乎是一个权限问题?我不明白以下是什么意思。如果这是权限问题,有人能建议吗?我如何解决它?

代码语言:javascript
复制
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

代码语言:javascript
复制
import pygame
import sys

pygame.init()

WIDTH = 800
HEIGHT = 600

screen = pygame.display.set_mode((WIDTH, HEIGHT))
background = pygame.image.load('background1.png')


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()

这是我的APACHE CONF文件

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName www.example.com

    ServerAdmin webmaster@localhost

    Alias /static /home/pi/Dev/ehome/src/static
        <Directory /home/pi/Dev/ehome/src/static>
           Require all granted
         </Directory>

    <Directory /home/pi/Dev/ehome/src/ehome>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess ehome python-path=/home/pi/Dev/ehome/src:/home/pi/Dev/ehome/lib/python3.5/site-packages
    WSGIProcessGroup ehome
    WSGIScriptAlias / /home/pi/Dev/ehome/src/ehome/wsgi.py


    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
EN

回答 1

Stack Overflow用户

发布于 2020-01-04 16:23:39

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

test_data.py

代码语言:javascript
复制
def my_function():
    output = "success!"
    return output

views.py

代码语言:javascript
复制
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位于同一个目录中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59592526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档