鱼C论坛

 找回密码
 立即注册
查看: 1806|回复: 7

[已解决]求大神怎么通过uwsgi运行python脚本?

[复制链接]
发表于 2023-4-28 13:21:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
脚本如下,如何通过网页获取到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)
最佳答案
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` 的文件,用以下内容填充:
[uwsgi]
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配置文件中的路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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` 的文件,用以下内容填充:
[uwsgi]
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配置文件中的路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-28 13:32:13 | 显示全部楼层
isdkz 发表于 2023-4-28 13:28
首先,您需要安装uWSGI和Flask。打开终端,运行以下命令安装它们:

我试下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-28 13:34:09 | 显示全部楼层
首先需要安装uwsgi
pip install uwsgi

然后可以通过如下命令运行该脚本:
uwsgi --http :8000 --wsgi-file test.py

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

如果需要从网页获取abc的值,可以在脚本中添加一个简单的Web框架比如 FlaskBottle,然后修改上面的命令为:
uwsgi --http :8000 --wsgi-file test.py --callable app

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

app = Flask(__name__)

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

这样,当访问 http://localhost:8000/ 时,就可以获取到abc的值了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-28 13:43:09 | 显示全部楼层

您好,我输入uwsgi uwsgi.ini启动服务后,网页访问提示被拒绝,没有使用nginx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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服务器时,它将监听所有可用网络接口。

请注意,将服务器绑定到所有地址可能会带来安全风险,因为任何人都可以尝试连接到您的应用程序。在生产环境中,建议使用防火墙或其他安全措施来保护您的应用程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

和用不用nginx没有关系是吧,可以不用nginx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-28 14:17:00 | 显示全部楼层

您好,大神在问您个问题,为什么我在脚本里添加了input获取用户的输入后打开网页会报错?是uwsgi不支持嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表