【问题标题】:Send and receive data from local client machine to a flask server on an Ubuntu server从本地客户端机器向 Ubuntu 服务器上的烧瓶服务器发送和接收数据
【发布时间】:2018-10-11 03:50:25
【问题描述】:

有人可以帮我解决我的问题吗?

在我的本地机器上,我有一个用 Python 实现的服务器和客户端。 JSON数据从客户端发送到服务器,服务器从中解析出所需的数据并将结果作为JSON文件发送回客户端。这在我的本地机器上运行良好。我现在想在 Ubuntu 服务器上实现这个烧瓶服务器,然后想发送和接收数据。我正在尝试按照

中的说明使用 mod_wsgi

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps

我仍然无法将数据取回本地计算机。这是我的代码:

client.py

import sys
import json
import requests
import time
import os
import glob

data_location = 'C:\\Users\\cathy\\Desktop\\data'  # folder containing all the data        
for root, directories, files in os.walk(data_location):
    for directory  in directories:
        loc = (data_location + '/' + directory + '/*')
        all_files = glob.glob(loc)
        for filename in all_files:
            f=open(filename)
            f=f.read().splitlines()
            payload = {'input': f}
            s = json.dumps(payload)
            #res = requests.post("http://127.0.0.1:5000/my_data/", json=s).json()
            res = requests.post("http://12.345.678.890/my_data/", json=s).json()
            #time.sleep(10)
            if res['employee_id']:
                print(res['employee_id'])
            if res['name']:
                print(res['name'])

server.py

from flask import Flask
from flask import request
import json
import re
import sys
import os
import time
from parsers import id_parser, name_parser
import spacy
import re
from datetime import datetime#
nlp = spacy.load('en_core_web_lg')
import glob
app = Flask(__name__) 


@app.route('/my_data/', methods = ['POST'])
def parsing_data():
    jsondata = request.get_json()
    data = json.loads(jsondata)
    requiredData=data['input']
    employee_id_=id_parser(requiredData)
    name=name_parser(requiredData)

    result = {'employee_id_': employee_id_, 'name':name}
    return json.dumps(result)


if __name__ == '__main__':
    app.run(debug=True)

【问题讨论】:

    标签: python flask


    【解决方案1】:

    尝试使用在烧瓶中兼容的烧瓶jsonify 方法而不是json.dump()

    #......
    from flask import jsonify
    #......
    
    
    @app.route('/my_data/', methods = ['POST'])
    def parsing_data():
        #.....
    
        result = {'employee_id_': employee_id_, 'name':name}
        return jsonify(result)
    

    我不确定它是否会有所帮助,但请尝试一下。 :)

    【讨论】:

    • 并使用flask中的jsonifymethod将数据发送到服务器
    • 也可以使用jsondata= request.json['input'] 来代替request.get_json()。然后你可以跳过这 3 行 jsondata = request.get_json(), data = json.loads(jsondata), requiredData=data['input'] 然后你可以像这样使用它:requiredData = request.json['input']
    • 当我在本地机器上同时运行客户端和服务器时,我的代码运行良好。我想知道如何让我的服务器代码在远程机器上运行?
    • 据我了解,您在 ubuntu 上运行 server.py,而在 Windows 上使用 client.py,但这是行不通的。当 server.py 和 client.py 在 ubuntu 上时它可以工作吗?您可以使用 curl 从 Windows 调用 server.py 以从 ubuntu server.py 获得简单的 201 响应吗?也许某些网关可能已关闭,或者如果您使用虚拟框来托管您的 ubuntu,您可能需要配置您的 vbox 以允许通信?
    • ubuntu中的server.py是否接收数据?您是否尝试打印从客户端发送的 json?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多