printing URL parameters of a HTTP request using Python + Nginx + uWSGI
我使用了这个链接,并成功地使用uwsgi运行了一个python脚本。尽管我只是一行一行地跟着医生。
我有一个GPS设备正在向远程服务器发送数据。同一个设备的文档说它使用TCP连接到服务器,因此这将是HTTP,因为像GPS设备一样简单的设备将无法进行HTTPS(我希望我就在这里),因为我已经配置了我的
我要做的是简单地在HTML页面上打印URL或查询字符串。因为我在设备端没有控制权(我只能将设备配置为在IP+端口上发送数据),所以我不知道数据是如何来的。下面是我的访问日志
1 | [23/Jan/2016:01:50:32 +0530]"(009591810720BP05000009591810720160122A1254.6449N07738.5244E000.0202007129.7200000000L00000008)" 400 172"-""-""-" |
现在我看到了这个链接,关于如何获取URL参数值,但是我不知道这里的参数是什么。
我试图将wsgi.py文件修改为
1 2 3 4 5 6 7 8 | import requests r = requests.get("http://localhost.com/") # or r = requests.get("http://localhost.com/?") as i am directly routing incoming http request to python script and incoming HTTP request might not have #any parameter, just data # text1 = r.status_code def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return ["<h1 style='color:blue'>Hello There shailendra! %s" %(text1)] |
号
但当我重新启动nginx时,我得到了
有人能帮我弄清楚我做错了什么,并指导我去看医生或资源吗?
谢谢。
你为什么使用localhost".com"?因为你是相同的机器上运行的Web服务器。你应该改变线。
1 | r = requests.get("http://localhost/") |
因此,移动从下面的wsgi.py看跌线和他们testserverconnection.py
1 2 3 4 | import requests r = requests.get("http://localhost/") # or r = requests.get("http://localhost.com/?") as i am directly routing incoming http request to python script and incoming HTTP request might not have #any parameter, just data # text1 = r.status_code |
启动nginx所以,你可能要运行(我不确定集对uwsgi nginx的)
1 | uwsgi --socket 0.0.0.0:8080 --protocol=http -w wsgi |
运行testconnection.py发送请求到Web服务器和本地测试打印响应
我有我的问题的答案。一个基本的TCP请求流程A,你需要打开一个TCP套接字和接受请求on a特异性端口(你指定的硬件)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): # self.request is the TCP socket connected to the client self.data = self.request.recv(1024).strip() print"{} wrote:".format(self.client_address[0]) #data which is received print self.data if __name__ =="__main__": #replace IP by your server IP HOST, PORT = <IP of the server>, 8000 # Create the server, binding to localhost on port 9999 server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) # Activate the server; this will keep running until you # interrupt the program with Ctrl-C server.serve_forever() |
您的数据后,你可以做任何事情的数据。什么是共享数据格式的GPS数据表中,我可以得到解析的字符串和LAT和长出它。