鱼C论坛

 找回密码
 立即注册
查看: 2781|回复: 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。打开终端,运行以下命令安装它们:

  1. pip install uwsgi flask
复制代码


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

  1. from flask import Flask
  2. import random

  3. app = Flask(__name__)

  4. # 判断中奖函数
  5. def lottery():
  6.     flag = random.randint(0, 100)
  7.     if flag < 1:
  8.         return 1
  9.     elif flag < 2:
  10.         return 2
  11.     elif flag < 3:
  12.         return 3
  13.     else:
  14.         return 4

  15. @app.route('/lottery')
  16. def run_lottery():
  17.     for i in range(10000):
  18.         if (lottery() <= 1):
  19.             abc = '恭喜中蛋糕'
  20.         elif (lottery() <= 2):
  21.             abc = 'mianbao'
  22.         elif (lottery() <= 3):
  23.             abc = 'tudou'
  24.         else:
  25.             abc = 'no'
  26.     return abc

  27. if __name__ == '__main__':
  28.     app.run()
复制代码


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

  1. [uwsgi]
  2. module = app:app
  3. master = true
  4. processes = 5
  5. socket = app.sock
  6. chmod-socket = 660
  7. vacuum = true
  8. die-on-term = true
复制代码


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

  1. uwsgi uwsgi.ini
复制代码


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

  1. location / {
  2.     include uwsgi_params;
  3.     uwsgi_pass unix:/path/to/your/project/app.sock;
  4. }
复制代码


现在,在浏览器中访问 `http://your_server_address/lottery`,您应该能够看到输出的中奖结果。注意,您需要根据实际情况修改Nginx配置文件中的路径。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  1. pip install uwsgi flask
复制代码


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

  1. from flask import Flask
  2. import random

  3. app = Flask(__name__)

  4. # 判断中奖函数
  5. def lottery():
  6.     flag = random.randint(0, 100)
  7.     if flag < 1:
  8.         return 1
  9.     elif flag < 2:
  10.         return 2
  11.     elif flag < 3:
  12.         return 3
  13.     else:
  14.         return 4

  15. @app.route('/lottery')
  16. def run_lottery():
  17.     for i in range(10000):
  18.         if (lottery() <= 1):
  19.             abc = '恭喜中蛋糕'
  20.         elif (lottery() <= 2):
  21.             abc = 'mianbao'
  22.         elif (lottery() <= 3):
  23.             abc = 'tudou'
  24.         else:
  25.             abc = 'no'
  26.     return abc

  27. if __name__ == '__main__':
  28.     app.run()
复制代码


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

  1. [uwsgi]
  2. module = app:app
  3. master = true
  4. processes = 5
  5. socket = app.sock
  6. chmod-socket = 660
  7. vacuum = true
  8. die-on-term = true
复制代码


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

  1. uwsgi uwsgi.ini
复制代码


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

  1. location / {
  2.     include uwsgi_params;
  3.     uwsgi_pass unix:/path/to/your/project/app.sock;
  4. }
复制代码


现在,在浏览器中访问 `http://your_server_address/lottery`,您应该能够看到输出的中奖结果。注意,您需要根据实际情况修改Nginx配置文件中的路径。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我试下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


  1. pip install uwsgi
复制代码


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


  1. uwsgi --http :8000 --wsgi-file test.py
复制代码


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

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


  1. uwsgi --http :8000 --wsgi-file test.py --callable app
复制代码


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


  1. python
  2. from flask import Flask

  3. app = Flask(__name__)

  4. @app.route('/')
  5. def index():
  6.     return abc
复制代码


这样,当访问 http://localhost:8000/ 时,就可以获取到abc的值了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

您好,我输入uwsgi uwsgi.ini启动服务后,网页访问提示被拒绝,没有使用nginx
小甲鱼最新课程 -> https://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()`行如下所示:

  1. if __name__ == '__main__':
  2.     app.run(host='0.0.0.0')
复制代码


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

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

  1. http = 0.0.0.0:8000
  2. http-timeout = 86400
复制代码


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

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

使用道具 举报

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

和用不用nginx没有关系是吧,可以不用nginx
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

您好,大神在问您个问题,为什么我在脚本里添加了input获取用户的输入后打开网页会报错?是uwsgi不支持嘛?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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