asis HTTP üzerinden As-Is belge (içeren başlıklarını ve içeriğini) hizmet için hafif Python aracıdır.
HTTP kaynaklarını getir birim test araçları gelince, biz karar biz kolayca önceden belirlenmiş yanıtları saklamak için bir yol var istiyorum, ve biz bu testleri çalışan konum olarak daha sonra aynı süreçte bir sunucudan onlara hizmet. Hiçbir maymun yama, (bir önbellekli vekil sunucu gibi) herhangi bir altyapı.
Bu onları yeniden varolan hizmetlerinden istekleri yakalamak ve arıyorsanız eğer, vcr projesi birçok dilde taşıdık ve çok yararlı olduğunu belirtmek gerekir.
Ne mi?
Twisted Apache esinlenerek gibi-bir hizmet olarak adlandırılan bir özellik ile geliyor. Ama, kim bir bağımlılık olarak Twisted dahil etmek istiyor?
Bu şişe göre, ve bu yüzden (bükülmüş ve gevent dahil) WSGI arka ucu desteklemektedir, ve hafif olması amacıyla edilir. Bir olduğu gibi belge başlıkları ve HTTP yanıt içerik hem de saklandığı biridir:
HTTP / 1.0 200 OK
İçerik-Uzunluk: 137
İçerik-Type: text / html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Merhaba, ben bir test sayfası değilim
& Nbsp;
Bu başlıkları için sadece yeni satır gerektirir Not - satırbaşları kolaylık otomatik olarak eklenir.
Kurulum
Kolay peasy:
sudo asis yüklemek pip
Ya kaynağından tercih edenler için:
Git klon https://github.com/seomoz/asis
cd asis && sudo python setup.py install
Kullanım
Sen nispeten kolay bir asis sunucusu çalıştırabilirsiniz:
ithalat asis
# Port 8080 üzerinde saklanan dosyaları 'foo /' Serve
Sunucu = asis.Server ('foo', 8080)
server.run ()
...
server.stop ()
Seçenek olarak ise, bir bağlama yöneticisi bir şekilde kullanılabilir:
ithalat asis
ithalat talepleri
sunucusu olarak asis.Server ('foo') ile:
& Nbsp; requests.get ('http: // localhost: 8080 / foo / bar.asis')
Orada da var, bir komut satırı yardımcı programı curl ile bu dosyaları veya tarayıcıyı görmek için özellikle yararlı olan bağımsız bir sunucu olarak asis dosyaları hizmet için kolaylık dahil:
# Port 8080 tarihinde 'foo /' dışarı dosyaları Serve
ASIS sunucu foo 8080 --port
# Aynı kullanarak gevent ve ayrıntılı olmak
ASIS sunucu foo --port 8080 --server gevent --verbose
Görünmeyen
Eğer yararlanmak gerekebilir birkaç özellik vardır:
İçerik-Kodlama
Ya gzip gibi Content-Encoding başlığını tedarik veya deflate ise, dosyasında saklanır düz içeriği sıkıştırılmış ve tel üzerinde bu şekilde gönderilir. Bu durumda, 0 olarak Content-Length bırakabilirsiniz, ve (sıkıştırma sonra) gerçek içerik uzunluğu onun yerine gönderilir. Örneğin, aşağıdaki doğru tarayıcıya gzip-sıkıştırılmış içerik olarak gönderilen alır:
HTTP / 1.0 200 OK
İçerik-Uzunluk: 0
Content-Type: text / plain
İçerik-Kodlama: gzip
Merhaba Dünya!
Karakter
Eğer Content-Type başlığında bir charset eklerseniz, o zaman içerik utf-8 diskte olarak yorumlanır ve daha sonra verilen kodlama kodlanmış olacak. açıkça kendi beyan karakter kümesi içinde örnekler kaydetmek zorunda değilsiniz, böylece fikir düzenleme sürecine yardımcı olmaktır. İçerik-Kodlama değişiklikler gibi, içerik-uzunluk başlığı dönüşüm tamamlandıktan sonra doğru olduğu tekrar hesaplanır.
Modlar
Varsayılan olarak, sunucu gevent sunucusu ile başlatılır ve bir arka plan yeşil parçacığı başladı, ve o () döndürür vadede en kısa sürede isteklere hizmet için hazır olması gerekiyordu.
Alternatif olarak, sunucu diğer iki modları, çatal ve blokta başlamış olabilir. Çatal, o zaman ayrı bir işlemde sunucu çalışır, ve hala hem içerik yöneticisi olarak ve çalıştırmak çağrıldıktan sonra çalışır (). Blok seçilirse, o zaman bir engelleme şekilde çalışır. Örneğin:
# Ayrı bir işlemde çalıştırın
asis.Server ('foo', liman = 8080, mod = 'çatal') ile:
& Nbsp; # bazı istekleri olun
& Nbsp; ...
Örnekler ve Testler
Belgeler olduğu gibi, ve test.py, doğru transfer olduğunu doğrulamak için doğrudan çalıştırılabilir örnekleri bir dizi burada bulunuyor:
./test.py
O da sizin birim testleri içine dahil olabilecek nasıl bir örnek sağlar.
katkıda
. Soru, yorum, fikirler her zaman hoş geldiniz
Gereksinimler :
- Python
Yorum Bulunamadı