首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flup和socket连接

flup和socket连接
EN

Stack Overflow用户
提问于 2016-04-27 23:46:50
回答 1查看 894关注 0票数 0

我正在尝试通过unix套接字连接到我的测试fcgi应用程序。服务器非常简单,取自flask文档http://flask.pocoo.org/docs/0.10/deploying/fastcgi/

客户端代码是我的。我希望通过socket.send发送示例超文本传输协议请求,并接收包含"Hello World“的超文本传输协议响应。问题是客户端在s.recv(1024)上挂断了,什么也没有发生。

服务器代码:

代码语言:javascript
复制
def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

if __name__ == '__main__':
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp, bindAddress="fcgi.sock").run()

客户端代码:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import socket

req = """GET / HTTP/1.1
Host: localhost\r\n\r\n"""

s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.settimeout(1.0)

s.connect("fcgi.sock")
s.send(req)

data = s.recv(1024)
s.close()

print('Received ' + repr(data))

我测试了通过nginx获得响应,它工作得很好,但我不能使用套接字来执行此操作。有人知道我的客户端代码出了什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-28 23:42:47

如果有人感兴趣,我就知道问题出在哪里了。

认为FCGI服务器将接收原始HTTP请求字符串并正确响应它的想法是天真的。FCGI服务器不是为处理HTTP而设计的,它是为FCGI请求而设计的,这些请求具有其他格式:http://www.mit.edu/~yandros/doc/specs/fcgi-spec.html

这就是它挂在recv上的原因--服务器根本无法响应这种类型的请求。

python flup包中包含fcgi客户端。如果你想测试你的fcgi应用程序,你可以使用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36894717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档