GAE通过POST发送CSV文件时出现错误500

2024-09-24 08:30:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的GAE应用程序创建一个端点,在那里我可以有问题地从客户机发送一个带有CSV文件(作为表单)的POST请求,然后服务器将接收它,并将它存储在数据存储中。但是,当我试图发送一个大文件时,它超时了。似乎最大URL获取超时是59.9秒,这就是它失败的地方。你知道吗

class CostTest(ndb.Model):
pickUp = ndb.StringProperty()
amount = ndb.StringProperty()

def post(self):
    self.response.write("part 1")
    print self.request.get('type')

    check_values = self.request.POST.getall('file')
    array = list(csv.reader(check_values))
    for c in array:
        pickup, amount = c
        entry = CostTest(pickUp=pickup,
                         amount=amount)
        entry.put()

        #print c
    self.response.write("part 2")
    self.response.write(self.request.get('file'))

app = webapp2.WSGIApplication([
('/csv/order', CsvFileLoader),
('/csv/kiosk', CsvFileLoader)
], debug=True)

我用来测试的文件有~4600行,但是无法全部加载!我尝试使用Blobstore,但是我不知道如何从POST请求中获取文件(如果可能的话?)。似乎存储到blob存储区的唯一方法是通过用户提交的表单!你知道吗

提前谢谢你的帮助。你知道吗


Tags: 文件csvself表单responserequestpostamount
2条回答

即使您“有时”满足60年代的HTTP请求限制,GAE数据存储也可能会随机花费更长的时间来处理读写操作,因此我建议先将上载的CSV文件存储在某个位置(您提到的blobstore,甚至作为另一个数据存储实体,请注意大小限制),然后使用任务队列异步处理它(限制为10分钟)。你知道吗

代码的问题不是“全部加载”,而是要执行4600次同步放置!如果你把它们都分批使用ndb.put\多,我相信它是有效的。python脚本可以复制提交的表单,上传到blobstore有什么问题?你知道吗

相关问题 更多 >