小邪 发表于 2023-4-28 13:21:51

求大神怎么通过uwsgi运行python脚本?

脚本如下,如何通过网页获取到abc的值?:

print('正在抽奖请稍后......')
import random
'''
where = ['蛋糕','面包','土豆']
target = random.choice(where)
print(target)
'''
#判断中奖函数

def lottery():
    flag = random.randint(0,100)
    if flag < 1:
      return 1
    elif flag < 2:
      return 2
    elif flag < 3:
      return 3
    else:
      return 4
   
if __name__=='__main__':
    #name = input('请输入您的微信昵称:')
    for i in range(10000):
      if (lottery()<=1):
            abc = '恭喜中蛋糕'      
      elif (lottery()<=2):
            abc= 'mianbao'
      elif (lottery()<=3):
            abc = 'tudou'
      else:
            abc = 'no'
print(abc)

isdkz 发表于 2023-4-28 13:28:46

首先,您需要安装uWSGI和Flask。打开终端,运行以下命令安装它们:

pip install uwsgi flask


接下来,创建一个名为 `app.py` 的文件,并将以下内容粘贴到文件中。此文件将成为Flask应用的入口点:

from flask import Flask
import random

app = Flask(__name__)

# 判断中奖函数
def lottery():
    flag = random.randint(0, 100)
    if flag < 1:
      return 1
    elif flag < 2:
      return 2
    elif flag < 3:
      return 3
    else:
      return 4

@app.route('/lottery')
def run_lottery():
    for i in range(10000):
      if (lottery() <= 1):
            abc = '恭喜中蛋糕'
      elif (lottery() <= 2):
            abc = 'mianbao'
      elif (lottery() <= 3):
            abc = 'tudou'
      else:
            abc = 'no'
    return abc

if __name__ == '__main__':
    app.run()


接下来,在同一个目录下创建一个名为 `uwsgi.ini` 的文件,用以下内容填充:


module = app:app
master = true
processes = 5
socket = app.sock
chmod-socket = 660
vacuum = true
die-on-term = true


现在,您可以运行以下命令启动uWSGI服务器:

uwsgi uwsgi.ini


然后,您可以使用Nginx或其他web服务器作为反向代理。这是一个简单的Nginx配置示例,假设您将项目放置在 `/path/to/your/project`:

location / {
    include uwsgi_params;
    uwsgi_pass unix:/path/to/your/project/app.sock;
}


现在,在浏览器中访问 `http://your_server_address/lottery`,您应该能够看到输出的中奖结果。注意,您需要根据实际情况修改Nginx配置文件中的路径。

小邪 发表于 2023-4-28 13:32:13

isdkz 发表于 2023-4-28 13:28
首先,您需要安装uWSGI和Flask。打开终端,运行以下命令安装它们:




我试下

歌者文明清理员 发表于 2023-4-28 13:34:09

首先需要安装uwsgi:


pip install uwsgi


然后可以通过如下命令运行该脚本:


uwsgi --http :8000 --wsgi-file test.py


其中,--http 指定了监听的端口,:8000 表示监听8000端口,--wsgi-file 指定了要运行的脚本文件。

如果需要从网页获取abc的值,可以在脚本中添加一个简单的Web框架比如 Flask 或 Bottle,然后修改上面的命令为:


uwsgi --http :8000 --wsgi-file test.py --callable app


其中,app 是你的Flask或Bottle应用程序实例名称。之后,在你的应用程序中添加一个路由处理程序,如:


python
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return abc


这样,当访问 http://localhost:8000/ 时,就可以获取到abc的值了。

小邪 发表于 2023-4-28 13:43:09

小邪 发表于 2023-4-28 13:32
我试下

您好,我输入uwsgi uwsgi.ini启动服务后,网页访问提示被拒绝,没有使用nginx

isdkz 发表于 2023-4-28 13:50:10

小邪 发表于 2023-4-28 13:43
您好,我输入uwsgi uwsgi.ini启动服务后,网页访问提示被拒绝,没有使用nginx

默认只能使用回环地址127.0.0.1连接。要让Flask应用程序绑定到所有可用地址,您需要将`app.run()`函数的`host`参数设置为`'0.0.0.0'`。这将允许来自任何IP地址的连接。

修改`app.py`文件中的`app.run()`行如下所示:

if __name__ == '__main__':
    app.run(host='0.0.0.0')


现在,当您运行`python app.py`启动Flask开发服务器时,它将监听所有可用网络接口。

对于uWSGI,您可以在`uwsgi.ini`文件中将`http`选项设置为`0.0.0.0:8000`,以便在所有可用地址上运行:

http = 0.0.0.0:8000
http-timeout = 86400


现在,当您运行`uwsgi uwsgi.ini`启动uWSGI服务器时,它将监听所有可用网络接口。

请注意,将服务器绑定到所有地址可能会带来安全风险,因为任何人都可以尝试连接到您的应用程序。在生产环境中,建议使用防火墙或其他安全措施来保护您的应用程序。

小邪 发表于 2023-4-28 13:56:36

isdkz 发表于 2023-4-28 13:50
默认只能使用回环地址127.0.0.1连接。要让Flask应用程序绑定到所有可用地址,您需要将`app.run()`函数的` ...

和用不用nginx没有关系是吧,可以不用nginx

小邪 发表于 2023-4-28 14:17:00

小邪 发表于 2023-4-28 13:32
我试下

您好,大神在问您个问题,为什么我在脚本里添加了input获取用户的输入后打开网页会报错?是uwsgi不支持嘛?
页: [1]
查看完整版本: 求大神怎么通过uwsgi运行python脚本?