我打电话给app.run(debug=True)我的烧瓶文件.
我用uWSGI和nginx部署了它(我遵循了这些说明)
uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666
Run Code Online (Sandbox Code Playgroud)
但是当我收到错误时,我没有在浏览器或uWSGI日志中获得任何调试信息.
有任何想法吗?
flask_file_name.py:
from flask import Flask, make_response, Response, jsonify
import json
app = Flask(__name__)
app.debug = True
@app.route("/")
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud) 我在uwsgi上运行一个烧瓶应用程序.我使用主管来管理uwsgi进程.我发现日志说的那样
您的服务器套接字侦听backlog限制为100个连接.
如何克服100个连接限制?我的运行脚本如下:
[program:myapp]
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads
Run Code Online (Sandbox Code Playgroud) 我正在调试我构建的微控制器,它逐行写入原始HTTP请求.我正在使用Flask作为后端,我希望看到整个请求,因为它以这种格式显示:
GET / HTTP/1.1
Content-length: 123
User-agent: blah
...
Run Code Online (Sandbox Code Playgroud)
我知道Flask基于WSGI.反正有没有让它与Flask一起工作?
从网上我发现WSGI是一个用于python web开发/框架的CGI.FCGI似乎是各种语言的更通用的网关.在参考python和C/++语言时,不知道两者之间的性能差异.
我有一个问题是使用wsgi在apache2上部署烧瓶应用程序.我已经在下面发布了错误日志和配置文件.我试过移动东西,重命名它们等,但都给了我一个内部服务器错误.不知道为什么我收到导入错误.任何意见/建议表示赞赏,谢谢!
这是我的apache error.log
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Target WSGI script '/sites/flaskfirst/wsgi.py' cannot be loaded as Python module.
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Exception occurred processing WSGI script '/sites/flaskfirst/wsgi.py'.
[Sun Sep 12 20:47:59 2010] [error] [client] Traceback (most recent call last):
[Sun Sep 12 20:47:59 2010] [error] [client] File "/sites/flaskfirst/wsgi.py", line 1, in <module>
[Sun Sep 12 20:47:59 2010] [error] [client] from app import app as application
[Sun Sep 12 20:47:59 2010] …Run Code Online (Sandbox Code Playgroud) 我似乎无法弄清楚如何使用WSGI访问POST数据.我在wsgi.org网站上尝试了这个例子,它没有用.我现在正在使用Python 3.0.请不要推荐WSGI框架,因为这不是我想要的.
我想弄清楚如何将它放入fieldstorage对象.
我试图在亚马逊的EC2实例上发布我的网站,并且我一直收到500错误.我真的不知道为什么.
//日志文件
[Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/apache/wsgi.py' cannot be loaded as Python module.
[Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/apache/wsgi.py'.
[Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last):
[Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/apache/wsgi.py", line 26, in <module>
[Sun Feb 17 23:12:48.066920 2013] from django.core.wsgi import get_wsgi_application
[Sun Feb 17 23:12:48.066945 2013] ImportError: No module named django.core.wsgi
Run Code Online (Sandbox Code Playgroud)
// Apache配置文件
WSGIScriptAlias / /srv/www/app/mysite/apache/wsgi.py
WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages …Run Code Online (Sandbox Code Playgroud) 我们正在并行开发Python Web服务和客户端Web站点.当我们从客户端向服务发出HTTP请求时,一次调用始终在socket.py中引发socket.error,在read中:
(104, 'Connection reset by peer')
当我使用wireshark收听时,"好"和"坏"的反应看起来非常相似:
Web服务和客户端都运行在运行glibc-2.6.1的Gentoo Linux x86-64机器上.我们在同一个virtual_env中使用Python 2.5.2.
客户端是一个Django 1.0.2应用程序,它调用httplib2 0.4.0来发出请求.我们使用OAuth签名算法对请求进行签名,OAuth令牌始终设置为空字符串.
该服务正在运行Werkzeug 0.3.1,它使用的是Python的wsgiref.simple_server.我通过wsgiref.validator运行WSGI应用程序,没有任何问题.
看起来这应该很容易调试,但是当我在服务端追踪一个好的请求时,它看起来就像是一个错误的请求,在socket._socketobject.close()函数中,将委托方法转换为虚方法.当send或sendto(不记得哪个)方法关闭时,FIN或RST被发送,客户端开始处理.
"由同行重置连接"似乎将责任归咎于服务,但我也不信任httplib2.客户可以有错吗?
**进一步调试 - 看起来像Linux上的服务器**
我有一台MacBook,所以我尝试在一台服务器和另一台客户端网站上运行服务.Linux客户端调用OS X服务器而没有错误(FIN ACK).OS X客户端使用错误调用Linux服务(RST ACK和a(54,'由peer重置连接')).所以,看起来它是在Linux上运行的服务.是x86_64吗?一个坏的glibc?的wsgiref?还在寻找...
**进一步测试 - wsgiref看起来很脆弱**
我们已经使用Apache和mod_wsgi进行生产,连接重置已经消失.请参阅下面的答案,但我的建议是记录连接重置并重试.这将使您的服务器在开发模式下运行正常,并且可以稳定地投入生产.
我在配置CKAN DataPusher时遇到了以下错误.
无效的命令'WSGIScriptAlias',可能由服务器中未包含的模块拼写错误或定义.配置'configtest'失败.
我怎样才能解决这个问题?
我有一个烧瓶REST端点,它执行一些cpu密集型图像处理,并需要几秒钟才能返回.通常,此端点被调用,然后由客户端中止.在这些情况下,我想取消处理.我怎么能在烧瓶中做到这一点?
在node.js中,我会做类似的事情:
req.on('close', function(){
//some handler
});
Run Code Online (Sandbox Code Playgroud)
我期待烧瓶有类似的东西,或者我可以在处理过程中检查某些点的同步方法(request.isClosed()),如果关闭则返回,但我找不到.
我考虑发送一些东西来测试连接是否仍然打开,如果失败则捕获异常,但似乎Flask缓冲所有输出,因此在处理完成并尝试返回结果之前不会抛出异常:
已建立的连接已由主机中的软件中止
如果客户端中止他们的请求,我怎样才能取消处理中途?
wsgi ×10
python ×8
flask ×5
apache ×3
amazon-ec2 ×1
ckan ×1
django ×1
django-wsgi ×1
fastcgi ×1
http ×1
httplib2 ×1
mod-wsgi ×1
python-3.x ×1
rest ×1
sockets ×1
supervisord ×1
ubuntu ×1
uwsgi ×1
werkzeug ×1