johnlockwood

Transfer Google Cloud Storage to BlobStorage

Oct 25th, 2012
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. class StartTransGsToBsHandler(webapp2.RequestHandler):
  2. def get(self):
  3. the_date = date.today()
  4. self.response.out.write('<html><body>')
  5. self.response.out.write('<form action="" method="POST" >')
  6. self.response.out.write("""start transfer from google storage to blobstore<br>
  7. <label for="id_filename">filename</label>
  8. <input type="text" id="id_filename" name="filename" value=""><br>
  9. <label for="id_storage_path">storage path</label>
  10. <input type="text" id="id_storage_path" name="storage_path" value="/gs/">
  11. <input type="submit" name="submit" value="Submit"> </form></body></html>""")
  12.  
  13. def post(self):
  14. filename = self.request.POST.get('filename')
  15. storage_path = self.request.POST.get('storage_path')
  16. taskqueue.add(url='/admin/gs_to_bs', countdown=0, params={
  17. 'filename': filename,'storage_path':storage_path})
  18. self.response.out.write('hi')
  19.  
  20.  
  21. class TransferGsToBsHandler(webapp2.RequestHandler):
  22. def post(self):
  23. filename = self.request.POST.get('filename')
  24. storage_path = self.request.POST.get('storage_path')
  25.  
  26. readsize = 5000000 #5MB
  27.  
  28. # Create the file
  29. file_name = files.blobstore.create(mime_type='application/octet-stream',
  30. _blobinfo_uploaded_filename=filename)
  31.  
  32. #open gs file
  33.  
  34.  
  35. # Open the file and write to it
  36. outf = files.open(file_name, 'a')
  37. logging.info("transfering file %s"%filename)
  38. inf = files.open(storage_path,'r')
  39. data = inf.read(readsize)
  40. inf_pos = inf.tell()
  41. while data != "":
  42. outf.write(data)
  43. logging.info("reading...%s"%inf_pos)
  44. inf.close()
  45. inf = files.open(storage_path,'r')
  46. inf.seek(inf_pos)
  47. data = inf.read(readsize)
  48. inf_pos = inf.tell()
  49. outf.close()
  50. outf = files.open(file_name, 'a')
  51.  
  52.  
  53. inf.close()
  54. outf.close()
  55.  
  56. logging.info("done")
  57. # Finalize the file. Do this before attempting to read it.
  58. files.finalize(file_name)
  59.  
  60. # Get the file's blob key
  61. blob_key = files.blobstore.get_blob_key(file_name)
Add Comment
Please, Sign In to add comment