用 manager 启动应用一切正常: python manage.py runserver --host 0.0.0.0 上传的 csv 文件都能正常写入 sqlite 数据库
使用 uwsgi+supervisor 部署之后: service supervisor start 上传 csv 文件到服务器,写入数据库时只能写一条数据,然后就显示内部错误 500 , log 文件里面也找不到原因,现在问题应该就出在 uWSGI 和 supervisor 上
配置参考: http://www.jianshu.com/p/84978157c785
哪位 v 友大神帮忙分析一下问题出在哪
1
wwqgtxx 2017-02-10 17:17:23 +08:00
我要是没记错, uwsgi 对每个 request 的相响应时间( python 程序的执行时间)是有要求的,超时就很容易被 kill 掉,不知道你的问题和这个有没有关系
|
2
Yourdaye OP @wwqgtxx 可能性比较大,因为需要调用第三方 API 进行数据查询,然后再写入数据库,所以耗时比较长。这个时间要在哪里设置呢?
|
3
clino 2017-02-10 17:24:27 +08:00
去看 uwsgi(如果有的话)和 supervisor 的 log 文件
|
4
freestyle 2017-02-10 17:31:53 +08:00
初期不建议直接 supervisor, 用 uwsgi --ini 你的 uwsgi ini 等配置文件 直接看到输出以定位问题
|
6
TJT 2017-02-10 17:47:24 +08:00
开 debug 直接运行看输出,还不行就上单步调试。
|
7
TJT 2017-02-10 17:53:13 +08:00
哦,看错了。我建议是用其他运行方式都跑一下,看能不能重现。
另外用 supervisor 的话, log 会在 stderr 里面,不在 stdout ,你可以两个都看一下,可能只是我这样。 stderr_logfile=/path/to/stderr.log |
8
Yourdaye OP |
10
Kilerd 2017-02-10 21:17:57 +08:00 via iPhone
|
12
wildog 2017-02-11 01:30:39 +08:00 via iPhone
如果是开发环境没问题但是 uwsgi 部署后有问题的话,你是不是在返回 response 之前开了一个新线程?
|
13
ryd994 2017-02-11 06:34:36 +08:00 via Android
换 gunicorn 试试,随便换换,修好了再研究为什么
|
14
rogwan 2017-02-11 08:24:33 +08:00 via Android
flask + gunicorn 坑少
|
15
TJT 2017-02-11 14:19:42 +08:00
@Yourdaye 说不定是你上传的文件超过了 uwsgi 的限制,参考下这个 http://uwsgi-docs.readthedocs.io/en/latest/Options.html#limit-post
也有可能是超过了 Nginx 的限制。 |