Vip üye
Üyelik Tarihi: 24-01-2017
Yorum Sayısı: 690
Konu Sayısı: 23
Rep Puanı:
11
heroku.com
Bu siteyi kullanan var mı bilmiyorum, kısaca anlatayım;
Python,php,js, dillerinde yazdığınız webapp ları çalıştırmanızı sağlayan ücretsiz güzel bir site
Free olarak açtığınız hesapta size kullanmanız için düşük özellikte ama işe yarar bir makine veriyor, şimdiye kadar işlerimi hallettim ama bir sorun çıktı
Şimdi bu makinede benim yapmak istediğim; internet ortamındaki bir dosyayı python ile başka bir yere yükleyeceğim, yani veriyi makinaya kayıt etmeden direk link üzerinden http-range ile okuyup okuyup başka bir siteye 'PUT' method ile upload etmeye çalışacağım.
Okuma kısımlarında sıkıntı olmuyor, sıkıntı yükleme kısmında, yani upload ettiğim siteye yüksek mb dosya yüklemeye çalıştığımda makine memory error hatası veriyor. PUT method yükleme yapınca bağlantıyı kesmeden dosyayı tek seferde yüklemek lazım heralde.
Python da PUT methodu kullanarak bağlantıyı kesmeden başka bir linkteki dosyayı 10 ar mb aralıklarla alıp buraya yazmanın bir yolu var mı?
Süper Üye
Üyelik Tarihi: 14-09-2017
Yorum Sayısı: 263
Konu Sayısı: 1
Rep Puanı:
3
01-06-2019, Saat: 19:55
(Son Düzenleme: 01-06-2019, Saat: 19:56, Düzenleyen: excel.)
hangi makine "memory error" veriyor? yazdığın kodu da eklesen iyi olur. bir de madem dosyanın tamamını bi yerden diğerine aktaracaksın neden bağlantıyı kesip kesip her seferinde range isteği yolluyosun onu da anlamadım.
Vip üye
Üyelik Tarihi: 24-01-2017
Yorum Sayısı: 690
Konu Sayısı: 23
Rep Puanı:
11
01-06-2019, Saat: 21:17
(Son Düzenleme: 01-06-2019, Saat: 21:24, Düzenleyen: oktay811.)
excel
Herkonun verdiği makina memory error veriyor, çünkü yüksek boyutlarda bir dosyayı okumaya çalıştığım için, memory e kayıt etmeye çalışıyor. Ama heroku sadece 500mb memory veriyor. Onun için 10 veya 100er mb sırasıyla okuyup put bağlantısına göndermem lazım.
Put bağlantısını başlatıp sonra download bağlantısından okuyup yükleyecek. "parts file transfering" diyebiliriz.
Normal biçimde ise örnek olarak, mesela dosyayı pc ye indirip yükleme yapıyoruz ya, ben o indirme kısmını direk es geçmek istiyorum.
Süper Üye
Üyelik Tarihi: 14-09-2017
Yorum Sayısı: 263
Konu Sayısı: 1
Rep Puanı:
3
anladım. kodu görmeden diyebileceğim pek bişey yok, problem büyük ihtimalle senin kurduğun algoritmada. yoksa bi urlden bişey okuyup başka urle paslamak çocuk oyuncağı.
ve ilk postunda dediğin PUT method yükleme yapınca bağlantıyı kesmeden dosyayı tek seferde yüklemek lazım heralde kısmı doğru evet, bağlantıyı kapatıp yenisini açınca üzerine yazıyor, sonuna eklemiyor.
Vip üye
Üyelik Tarihi: 24-01-2017
Yorum Sayısı: 690
Konu Sayısı: 23
Rep Puanı:
11
PHP Kod:
PUT http://example.com/uploadfile1234 HTTP/1.1 Host: example.com Connection: keep-alive Content-Length: 5 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 Content-Type: text/plain Accept: application/json, text/plain, */* X-Object-Meta-File-Name: Dosyaismi Referer: http://example.com Accept-Encoding: gzip, deflate, br Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
<İnternet oratamından aldığım veri....>
HTTP/1.1 201 Created Content-Length: 0 Access-Control-Expose-Headers: cache-control, content-language, content-type, expires, last-modified, pragma, etag, x-timestamp, x-trans-id Last-Modified: Thu, 11 Apr 2019 20:08:53 GMT Etag: d41d8cd98f00b204e9800998ecf8427e Access-Control-Allow-Origin: http://example.com Content-Type: text/html; charset=UTF-8 X-Trans-Id: txc546feae032e4bd98ec98-005caf9ed4 Date: Thu, 11 Apr 2019 20:08:52 GMT Connection: keep-alive
------------------------------------------------------------------
Açıkçası şu anda kullandığım bir script yok, eskiside işe yaramadığı için sildim.
Yukarıdaki bağlantı modeli işlemi yapmak istediğim sitenin dosya yükleme şekli diyebilirim.
Buna uygun bir şekilde requests veya urllib2 ile nasıl bişey yapabilirim?
Süper Üye
Üyelik Tarihi: 14-09-2017
Yorum Sayısı: 263
Konu Sayısı: 1
Rep Puanı:
3
valla ben başkasını bırak kendim için de nadiren kod yazıyorum o yüzden benden çok bişey bekleme oktay, örnek çalışan link versen shell scripti yazarım en fazla download adresine ve bitane de upload adresine bağlantı açacak, birinden okuyup birine yazacaksın bu kadar basit. buffering (1MB okuyup 1MB yazmak mesela) yapınca zaten dosyanın boyutunun bi önemi yok, sunucudan range istemek için de bi sebep yok.
Kıdemli Üye
Üyelik Tarihi: 03-06-2016
Yorum Sayısı: 232
Konu Sayısı: 6
Rep Puanı:
6
heroku baya iyi bir site app engine den herokuya gectim free icin. Zaten sinir yoksa memory izin verdiği kadar dosya upload edersin . Büyük boyutlu dosyalarda sunucu olarak kullandigin app zaten bir kısıtlama getirir. Tahmin edebiliyorum hangi uygulamayi kullandığını. Dosya ismini zaten sen kendin belirliyorsun ona göre yuklersin 1.txt, 2.txt ... sonra download yaparsın sürekli üstüne yazıp. Free sistemlerden bir şey beklememek lazım . Yada bir kaç tane free hesap açıp hepsini ortak kullanabilirsin . Hepsi aynı anda partlari yükler .
Vip üye
Üyelik Tarihi: 24-01-2017
Yorum Sayısı: 690
Konu Sayısı: 23
Rep Puanı:
11
02-06-2019, Saat: 01:59
(Son Düzenleme: 02-06-2019, Saat: 02:00, Düzenleyen: oktay811.)
ahgonlum
Şimdi şöyle;
Benim asıl yapmak istediğim dosyayı tek part halinde yüklemek, kastettiğin şeyi anladım fakat bu ondan farklı bir sistem.
Yinede yorum için teşekkür ederim hocam.
Kıdemli Üye
Üyelik Tarihi: 03-06-2016
Yorum Sayısı: 232
Konu Sayısı: 6
Rep Puanı:
6
Oluyorsa 500 mb hafıza dolunca bosaltirsin yine yüklemeye devam edersin hafızayı kullanarak. Memory error vermemesi için tabi dediğim teori gerçekte denemek lazim. Diyelim 1gb dosya yukleyeceksin 500'ü hafızaya alırsın onu yuklersin sonra hafızayı temizleyip tekrar yine 500 mb lik veriyi yine aynı şekilde yüklersin. Dosyayı yüklemek yerine websocketle aynı anda veriyi yazıp karşı taraftan indirebilirsin. Ama put ile direk verinin tamami yukleniyorsa yukledigin dosya boyutu kadar hafıza şart olabilir.
Vip üye
Üyelik Tarihi: 24-01-2017
Yorum Sayısı: 690
Konu Sayısı: 23
Rep Puanı:
11
ahgonlum
Hah işte sıkıntı orada, put bağlantısını kesmeden bunu nasıl yapacağımı bilmiyorum.
requests.put(url, data=data)
Yada
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(url, data=data)
request.get_method = lambda: 'PUT'
url = opener.open(request)
Bağlantıyı kesmeden veriyi sadece put metoduyla yüklemek için böyle yapılıyor, ama ben tek seferde yapamayacağım için sistemi nasıl kuracağımı bilemedim
|