2009-08-08 21 views
6

ben basitleştirmek için _http() yöntemi kullanıyorum gördüğünüz gibi buEn iyi uygulama kullanırken httplib2.Http() nesnesi

import httplib2 
import urllib 

class apiWrapper: 

    def __init__(self): 
     self.http = httplib2.Http() 

    def _http(self, url, method, dict): 
     ''' 
     Im using this wrapper arround the http object 
     all the time inside the class 
     ''' 
     params = urllib.urlencode(dict) 
     response, content = self.http.request(url,params,method) 

gibi bir sınıf ile pythonic web API sarıcı yazıyorum httplib2.Http() nesnesiyle etkileşim. Bu yöntem sınıf içinde oldukça sık olarak adlandırılır ve bu nesne ile etkileşim için en iyi yolu nedir merak ediyorum: __init__ ve sonra yeniden o _http() yöntemi denir (olarak

  • yılında nesne oluşturmak yukarıdaki kodu)
  • içinde gösterilen veya aşağıdaki kod örneğinde gösterildiği gibi
) _http() yöntemi (her çağrı için yöntem içinde httplib2.Http() nesne oluşturmak Eğer bağlantıları yeniden eğer
import httplib2 
import urllib 


class apiWrapper: 

    def __init__(self): 

    def _http(self, url, method, dict): 
     '''Im using this wrapper arround the http object 
     all the time inside the class''' 
     http = httplib2.Http() 
     params = urllib.urlencode(dict) 
     response, content = http.request(url,params,method) 

cevap

2

Sen Http nesne tutmalı. Görünüşe göre, httplib2, bağlantıları ilk kodunuzda kullandığınız şekilde yeniden kullanabiliyor, bu da iyi bir yaklaşım gibi görünüyor. Aynı zamanda

, httplib2 kodunun sığ muayene gelen httplib2 kullanılmayan bağlantıları temizleyerek veya sunucudan artık istediği bir bağlantı kapatmaya karar verdi bile fark için hiçbir desteği vardır gibi görünüyor. Bu durumda, bana httplib2 bir hata gibi görünüyor - bu yüzden yerine standart kitaplığı (httplib) kullanmayı tercih ederim.

7

'bağlantı' İkmal: dokümanlar göre olmalıdır Üstbilgilerinizde 'yakın' bir yanıt alındıktan sonra bağlantıyı .:

headers = {'connection': 'close'} 
resp, content = h.request(url, headers=headers) 
kapatmak