我正在尝试为我的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存储区的唯一方法是通过用户提交的表单!你知道吗
提前谢谢你的帮助。你知道吗
即使您“有时”满足60年代的HTTP请求限制,GAE数据存储也可能会随机花费更长的时间来处理读写操作,因此我建议先将上载的CSV文件存储在某个位置(您提到的blobstore,甚至作为另一个数据存储实体,请注意大小限制),然后使用任务队列异步处理它(限制为10分钟)。你知道吗
代码的问题不是“全部加载”,而是要执行4600次同步放置!如果你把它们都分批使用ndb.put\多,我相信它是有效的。python脚本可以复制提交的表单,上传到blobstore有什么问题?你知道吗
相关问题 更多 >
编程相关推荐