Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将远程CSV文件数据发布到django本地服务器问题_Python_Django_Raspberry Pi - Fatal编程技术网

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

Python 将远程CSV文件数据发布到django本地服务器问题,python,django,raspberry-pi,Python,Django,Raspberry Pi,所以我有一个Raspberry Pi在一个CSV文件中收集数据,该文件存储在Pi的本地。Raspberry Pi连接到大学网络,因此要远程访问Pi,我只需连接到大学网络,并在我的PyCharm IDE中设置远程项目解释器 我编写了一个脚本,它访问本地Raspberry Pi上的特定CSV文件,然后将每行数据发布到本地Django服务器。但是当我运行它的时候,我不断地得到一个错误。我在自己的计算机上用本地CSV文件测试了本地Django服务器和脚本,它工作正常 我经常遇到的错误是: request

所以我有一个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]连接被拒绝])

我解决这个问题的第一个想法是:

  • 确保我的本地服务器正在实际运行(它正在运行)
  • 禁用我的Windows防火墙
  • 将实际的CSV文件读取脚本放在Raspberry Pi本身上,然后运行它
  • 仔细检查我的项目解释器(这是正确设置的,因为我可以通过PyCharm访问本地Pi上的其他Python文件)
  • 通过命令提示符shell运行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)