Flash uwsgi不执行if __name__ == ‘__main__‘里的内容

本文探讨了使用uwsgi和直接运行python启动Flask应用的区别,重点在于`if __name__ == '__main__':`条件在uwsgi环境下不执行的情况,导致app.run()未被调用。当手动修改`__name__`为`'uwsgi_file__opt_main'`后,两个端口被占用,分别由uwsgi和app.run监听。解决办法是在uwsgi配置中正确处理初始化代码,避免依赖`__main__`检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、代码如下:

print(__name__)
if __name__ == '__main__':
    print('inner main')
    app.run()

2、使用 uwsgi启动,打印出来的是:uwsgi_file__opt_main,不会执行app.run

/usr/local/python3/bin/uwsgi uwsgi.ini

控制台显示:

WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x15ae5a0 pid: 9 (default app)
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (pid: 9, cores: 2)
spawned uWSGI worker 2 (pid: 16, cores: 2)

3、使用python启动,打印出来的是:__main__以及inner main,执行了app.run,

python main.py

 执行到

cli.show_server_banner(self.env, self.debug, self.name, False)

控制台显示:

Serving Flask app "common" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

4、如果将'__main__'改为:'uwsgi_file__opt_main',并使用uwsgi方式启动

在linux控制台下,可以看到有两个端口占用,一个是uwsgi的,一个是app.run的默认5000端口

telnet localhost 8090
telnet localhost 5000
ctrl + ]

5、所以,需要初始化的代码,用uwsgi启动时,不要放在if __name__ = '__main__':下 

### Flask 应用本地访问 404 错误解决方案 当在本地环境中启动 Flask 应用并尝试访问时遇到 404 错误,这通常意味着请求的 URL 路径未被正确路由到相应的视图函数。以下是几种可能的原因及其对应的解决办法: #### 配置静态文件和模板路径 确保 `static` 和 `templates` 文件夹位于应用程序的根目录下,并且这些资源可以通过正确的相对路径加载。 ```python from flask import Flask, render_template app = Flask(__name__, static_folder='static', template_folder='templates') ``` #### 正确设置调试模式 启用调试模式可以帮助更清晰地看到错误日志信息,从而更容易定位问题所在。 ```python if __name__ == "__main__": app.run(debug=True) ``` #### 检查 URL 映射规则 确认所有定义好的路由都已注册至 Flask 实例中,并且没有拼写错误或其他语法问题。 ```python @app.route('/') def index(): return "Hello World!" ``` #### 使用 Nginx 反向代理重定向 如果前端与后端分离部署在同一台机器的同端口上,可以考虑利用 Nginx 的反向代理功能来实现跨域资源共享(CORS),并将 `/partners/*` 请求转换为 /* 形式的内部请求[^2]。 ```nginx server { listen 80; server_name localhost; location /partners/ { rewrite ^.+partners/?(.*)$ /$1 break; proxy_pass http://localhost:5000/; include uwsgi_params; } } ``` #### 修改 Flash 安全策略 (针对旧版 Flash 内容) 对于某些依赖于 Adobe Flash 技术的老版本 Web 应用程序来说,可能会受到严格的同源政策限制影响而导致无法正常工作。此时可通过调整 Flash Player 的安全设置允许特定 SWF 文件访问网络资源[^5]。 然而需要注意的是现代浏览器已经逐渐淘汰对插件的支持,因此建议尽可能迁移到 HTML5 或其他替代技术栈上来构建新的交互体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值