asis ay isang magaang na Python utility para sa paghahatid Bilang-ay dokumento (na naglalaman ng mga header at nilalaman) sa paglipas ng HTTP.
Pagdating sa mga tool sa pagsubok ng unit na makuha ang mga mapagkukunan ng HTTP, kami nagpasya gusto naming magkaroon ng isang paraan upang madaling mag-imbak ng nauna nang itinakdang mga tugon, at pagkatapos ay maghatid ng mga ito mula sa isang server sa ang parehong proseso sa nagpapatakbo ka namin ang mga test. Walang mga unggoy patching, walang imprastraktura (tulad ng pag-cache ng proxy server).
Dapat itong nabanggit na kung naghahanap ka upang makakuha ng mga kahilingan mula sa mga kasalukuyang serbisyo at pagkatapos ay i-replay ang mga ito, ang proyekto vcr ay nai-port sa maraming mga wika at ay lubos na kapaki-pakinabang.
Ano ba?
Baluktot ay may tampok na tinatawag na bilang-ay nagsisilbi, inspirasyon ng Apache. Ngunit, ng gustong isama baluktot bilang isang dependency?
Ito ay batay sa bote, at sa gayon ay sumusuporta sa isang bilang ng mga WSGI backends (kabilang ang mga baluktot at gevent), at nilalayong maging magaan ang timbang. Ang isang bilang-ay dokumento ay isa kung saan ang parehong header at sa nilalaman para sa isang HTTP response ay naka-imbak:
HTTP / 1.0 200 OK
Content-Length: 137
Nilalaman-Uri: teksto / html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Kumusta, ako ng isang pagsubok na pahina
& Nbsp;
Tandaan na nangangailangan ito lamang bagong linya para sa header - ang pagbalik ng carriage ay awtomatikong idinagdag para sa kaginhawahan.
Pag-install
Madaling peasy:
Sudo buto ng bungang-kahoy-install asis
O para sa mga may gusto mula sa mapagkukunan:
Git clone https://github.com/seomoz/asis
cd asis && Sudo python setup.py-install
Paggamit
Maaari kang magpatakbo ng isang server asis medyo madali:
-import asis
# Ihatid ang mga file na naka-imbak sa 'foo /' sa port 8080
server = asis.Server ('foo', 8080)
server.run ()
...
server.stop ()
Bilang kahalili, maaari itong gamitin sa isang context-manager pananamit:
-import asis
-import ng mga kahilingan
may asis.Server ('foo') bilang server:
& Nbsp; requests.get ('http: // localhost: 8080 / foo / bar.asis')
Mayroon ding isang command-line utility na kasama para sa kaginhawahan para sa paghahatid asis mga file bilang isang nakapag-iisang server, na kung saan ay espesyal na kapaki-pakinabang para makakita ng mga file na ito sa pamamagitan ng kulutin o sa browser:
# Ihatid ang mga file sa labas ng 'foo /' sa port 8080
asis-server foo --port 8080
# Parehong, gamit gevent at pagiging masyadong masalita
asis-server foo --port 8080 --server gevent --verbose
Bells at mga pito
Mayroong ilang mga tampok ay maaaring kailangan upang samantalahin ang:
Content-Encoding
Kung ibibigay mo sa header na Content-pag-encode bilang alinman gzip o mag-alis ng hangin, ang plain mga nilalaman na naka-imbak sa ang file ay naka-compress at ipinapadala sa pamamagitan ng wire na paraan. Sa mga kasong iyon, maaari mong iwanan ang Content-Length bilang 0, at ang tunay na haba ng nilalaman (pagkatapos ng compression) ay ipapadala sa lugar nito. Halimbawa, ang sumusunod ay makakakuha ng ipinadala bilang gzip-compress na nilalaman nang tama sa browser:
HTTP / 1.0 200 OK
Content-Length: 0
Nilalaman-Uri: teksto / plain
Content-Encoding: gzip
Kamusta mundo!
Charset
Kung nagsama ka ng charset sa iyong Content-Uri ng header, pagkatapos ang iyong nilalaman ay binigyang-kahulugan bilang utf-8 sa disk, at pagkatapos ay naka-encode sa ang ibinigay na pag-encode. Ang ideya ay upang matulungan ang proseso ng pag-edit upang hindi mo na kailangang tahasang save ang iyong mga halimbawa sa kanilang idineklarang character set. Tulad ng mga pagbabago sa Content-Encoding, ang header na Content-Length ay recomputed tama nang isang beses ang pagbabago ay kumpleto na.
Mga Mode
Sa pamamagitan ng default, ang server ay makapagsimula sa gevent server, at ito ay nagsimula sa isang background berde thread, at ito ay dapat na maging handa upang maghatid ng mga kahilingan sa lalong madaling run) babalik (.
Bukod dito, ang server ay maaaring nagsimula sa dalawang iba pang mga mode, tinidor at i-block. Kung tinidor, pagkatapos ay patakbuhin ang server sa isang hiwalay na proseso, at gumagana pa rin ito bilang parehong konteksto manager at pagkatapos pagtawag run (). Kung bloke ay pinili, pagkatapos ito ay tumatakbo sa isang pag-block paraan. Halimbawa:
# Patakbuhin ito sa isang hiwalay na proseso
may asis.Server ('foo', port = 8080, mode = 'tinidor'):
& Nbsp; # Magsagawa ng ilang mga kahilingan
& Nbsp; ...
Mga halimbawa at Mga Pagsusuri
Kasama sa narito ang ilang mga halimbawa ng mga bilang-ay dokumento, at maaaring tumakbo nang direkta test.py upang i-verify na ang mga ito ay inilipat tama:
./test.py
Nagbibigay din ito ng isang halimbawa kung paano maaari mong isama ito sa iyong pagsusuri ng yunit.
-aambag
. Tanong, komento, mga ideya palaging maligayang pagdating
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan