将远程CSV文件数据发布到Django本地服务器问题

时间:2020-10-02 20:13:24

标签: python django raspberry-pi

所以我有一个Raspberry Pi,它以CSV文件收集数据,该文件存储在Pi本地。 Raspberry Pi已连接到大学网络,因此要远程访问Pi,我只需要连接到大学网络,并在我的PyCharm IDE中设置一个远程项目解释器即可。

我编写了一个脚本,该脚本访问本地Raspberry Pi上的特定CSV文件,然后将每行数据发布到本地Django服务器。但是我运行它时总是出错。我已经在自己的计算机上使用本地CSV文件测试了本地Django服务器和脚本,并且可以正常工作。

我一直遇到的错误是: requests.exceptions.ConnectionError:HTTPConnectionPool(host ='127.0.0.1',port = 8000):url超过了最大重试次数:/ datavaluetable /(由NewConnectionError('导致:无法建立一个新的连接:[Errno 111]连接被拒绝'))

我解决该问题的最初想法是:

  1. 确保我的本地服务器实际上正在运行
  2. 禁用我的Windows防火墙
  3. 将实际的CSV文件读取脚本放置在Raspberry Pi本身上,然后运行它
  4. 再次检查我的项目解释器(此设置正确,因为我可以通过PyCharm访问本地Pi上的其他Python文件)
  5. 通过命令提示符外壳运行django服务器并在PyCharm中运行CSV发布脚本

我每次仍然会遇到相同的错误,现在我完全被卡住了。我的系统是Windows 10,而Pi的系统是基于Linux的吗?我将不胜感激,谢谢!

我的CSV发布脚本:

import csv
import requests

csvFilePath = '/home/pi/temp/tmp.csv' # local directory of CSV on Pi

with open(csvFilePath) as f:  # opens csv file as variable f
    reader = csv.DictReader(f)
    for row in reader:  # Iterates through each row
        x = requests.post('http://127.0.0.1:8000/datavaluetable/', headers={'Content-Type': 'application/json'}, json=row)

Django后期处理代码(Views.py):

RESERVED_FIELDS = ['Node ID', 'System Time']

class DataValueTableList(APIView):

    parser_classes = [JSONParser]

    authentication_classes = []
    permission_classes = []


    def post(self, request, format=None):
        datas = request.data
        nodeID = datas.get("Node ID")
        timestamp = datas.get("System Time")
        

        for key, value in datas.items(): # iterates through each key
            if key in RESERVED_FIELDS:
                continue
            else:
                DataValueTable.objects.create(sensorName=nodeID, timestamp=timestamp, valueName=key)
        return Response(status=status.HTTP_201_CREATED)

    

0 个答案:

没有答案