İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

requests-cache - Gereksiz İnternet Kullanımından Kaçının

Gbmdpof - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
09/2016
Mesajlar:
1.998
Konular:
157
Teşekkür (Etti):
197
Teşekkür (Aldı):
712
Ticaret:
(0) %
06-08-2018 10:12
#1
requests-cache - Gereksiz İnternet Kullanımından Kaçının
Merhaba, bu gün sizlere gönderdiğiniz istekleri önbelleğe almanızı sağlayan, requests-cache kütüphanesini göstereceğim. Bu kütüphane, aynı yere aynı parametrelerle aynı request'i atıp her seferinde aynı response'ı alıyorsanız yaptığınız request'leri önbelleğe alarak performansınızı arttırabiliriz ve internet kullanımını azaltabiliriz.

Öncelikle kurulumuyla başlayalım:
Kod:
pip install --upgrade requests-cache

veya, GitHub üzerinden de son versiyonunu kurabiliriz.

Kod:
git clone git://github.com/reclosedev/requests-cache.git && cd requests-cache
python setup.py install

NOT: requests, urllib3 veya requests_cache kütüphanelerine gelen güncellemeler var olan önbellek veritabanını bozabilir. Bunu engellemek için bir virtual environment kullanmak veya kütüphane versiyonlarını sabitlemek daha mantıklı olabilir.

Kulanım

requests_cache, iki yolu var:
  1. requests.Session yerine CachedSession kullanmak.
  2. requests'i CachedSession kullanması için yamalamak

Yamalamak için, hazırdaki programa 2 satır kod eklemek yeterlidir. Tek yapmanız gereken requests_cache'i importlamak ve install_cache()'i çağırmak.

Kod:
import requests
import requests_cache

requests_cache.install_cache()
Artık requests'i hiçbir şey olmamış gibi kullanabilirsiniz. Örneğin bu örneğe bakalım, her request başına 1 saniye delay olacağından normalde 10 saniyeden fazla sürmesi gerekirdi fakat cache kullandığımız için 1-2 saniyede bitecek:

Kod:
for i in range(10):
    requests.get('http://httpbin.org/delay/1')
Cache ayrıca dosya adı, backend sistemi, sona erme zamanı gibi bazı seçenekler ile özelleştirilebilir. Örneğin bu örnekte cache, sqlite veritabanında 'test_cache.sqlite' adı ile ve 300 saniye sona erme süresi ile saklanacak. Bunun için kullanacağım kod:
Kod:
requests_cache.install_cache('test_cache', backend='sqlite', expire_after=300)

Ayrıca, eğer requests'i yamaladıysak bunu requests_cache.uninstall_cache() ile kaldırabilir veya eğer tamamen kaldırmayıp da birkaç requestliğine kapatmak istersek requests.cache.disabled() context managerını kullanarak geçici olarak devre dışı bırakabiliriz.

Kod:
with requests_cache.disabled():
    print(requests.get('http://httpbin.org/ip').text)
Ayrıca eğer bir requestin cacheden mi yapıldığını anlamak için from_cache attribute'ünü kullanabiliriz. Bu True ise cacheden alınmış demektir.

Kod:
>>> import requests
>>> import requests_cache
>>> requests_cache.install_cache()
>>> requests_cache.clear()
>>> r = requests.get('http://httpbin.org/get')
>>> r.from_cache
False
>>> r = requests.get('http://httpbin.org/get')
>>> r.from_cache
True
Depolama Seçenekleri

Bu kütüphane, varsayılan olarak sqlite kullansana da bunu değiştirebiliriz. install_cache()'i çağırırken backend argümanı belirlersek bu değişecektir. Kullanabileceğiniz backend sistemleri şunlar:
  • sqlite - sqlite veritabanı (Varsayılan)
  • memory - bir dict içinde saklar, kalıcı değildir
  • mongodb - (deneysel) mongodb veritabanı (pymongo < 3.0 gereklidir)
  • redis - tüm veriyi bir redis data store'da saklar (redis gereklidir)
---------------------
~humanity is overrated~
BufGix, k3~, UnknownRight Teşekkür etti.
ByZehirxx - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2018
Nereden:
Geldin
Mesajlar:
596
Konular:
67
Teşekkür (Etti):
77
Teşekkür (Aldı):
92
Ticaret:
(0) %
06-08-2018 10:18
#2
Eline sağlık yararlı konu
--------------------- Eğer kendilerini tanımış olsaydınız, Türklere hayran olurdunuz.-
atmaca7887 - ait Kullanıcı Resmi (Avatar)
Moderatör
Üyelik tarihi:
12/2017
Nereden:
Atlas'a
Mesajlar:
2.877
Konular:
186
Teşekkür (Etti):
341
Teşekkür (Aldı):
429
Ticaret:
(0) %
06-08-2018 10:52
#3
Ellerine sağlık.
---------------------
Dünya dönüyor , dönüyor başım dönüyor bi sokak arası gibi sahteliğine dönüyor
Sahte suratlarını görüyom sevdiğimi kaybettim duygularım ölüyor
k3~
k3~ - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
10/2015
Mesajlar:
2.881
Konular:
202
Teşekkür (Etti):
1743
Teşekkür (Aldı):
3389
Ticaret:
(0) %
06-08-2018 13:48
#4
Eline sağlık
UnknownRight Teşekkür etti.
Depdip - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Nereden:
NewYork
Mesajlar:
1.588
Konular:
46
Teşekkür (Etti):
296
Teşekkür (Aldı):
420
Ticaret:
(0) %
06-08-2018 13:52
#5
Ellerine Sağlık Hocam Devamını Bekleriz.
UnknownRight Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı