Repository URL to install this package:
|
Version:
4.2.1 ▾
|
U
*Å]z ã @ sì d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZzd dlZW n e k
rh d dl
ZY nX d dlmZ d dlm
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZ d dlmZ d dlmZ G d
d dZG dd dZG dd dZG dd dZG dd dZG dd dejZ G dd dej!Z"G dd dejZ#G dd de#Z$G dd d e#Z%G d!d" d"Z&G d#d$ d$Z'G d%d& d&Z(d'd( Z)G d)d* d*Z*G d+d, d,Z+G d-d. d.eZ,dS )/é N)Úurllib)Úsha1)Úas_bytes)Ú as_string)Úasyncore_25)Ú http_date)Úhttp_server)Ú producers)Úfilesys)Údefault_handler)Úauth_handlerc @ s e Zd ZdS )ÚNOT_DONE_YETN)Ú__name__Ú
__module__Ú__qualname__© r r ú./build/lib/supervisor/http.pyr
s r
c @ s" e Zd ZdZdddZdd ZdS )Údeferring_chunked_producera' A producer that implements the 'chunked' transfer coding for HTTP/1.1.
Here is a sample usage:
request['Transfer-Encoding'] = 'chunked'
request.push (
producers.chunked_producer (your_producer)
)
request.done()
Nc C s || _ || _d| _d S ©N皙¹?)ÚproducerÚfootersÚdelay)Úselfr r r r r Ú__init__) s z#deferring_chunked_producer.__init__c C sp | j rh| j ¡ }|tkrtS |r@dt| }t|d | d S d | _ | jrbd dg| j ¡d S dS ndS d S )Nz%xs
ó 0s
s 0
ó )r Úmorer
Úlenr r Újoin)r ÚdataÚsr r r r . s
zdeferring_chunked_producer.more)N©r r r Ú__doc__r r r r r r r s
r c @ s e Zd ZdZdd Zdd ZdS )Údeferring_composite_producerz$combine a fifo of producers into onec C s || _ d| _d S r )r r )r r r r r r A s z%deferring_composite_producer.__init__c C sB t | jr>| jd }| ¡ }|tkr(tS |r0|S | j d¡ q dS )Nr r )r r r r
Úpop)r ÚpÚdr r r r E s
z!deferring_composite_producer.moreNr" r r r r r$ ? s r$ c @ s" e Zd ZdZdddZdd ZdS ) Údeferring_globbing_producerzÌ
'glob' the output from a producer into a particular buffer size.
helps reduce the number of calls to send(). [this appears to
gain about 30% performance on requests to a single channel]
é c C s || _ d| _|| _d| _d S )Nr r )r ÚbufferÚbuffer_sizer )r r r+ r r r r Z s z$deferring_globbing_producer.__init__c C sz t | j| jk rj| j ¡ }|tkr&tS |rjz| j| | _W qh tk
rb t| jt| | _Y qhX q qjq | j}d| _|S ©Nr )r r* r+ r r r
Ú TypeErrorr )r r Úrr r r r ` s
z deferring_globbing_producer.moreN)r) r" r r r r r( S s
r( c @ s e Zd ZdZdd Zdd ZdS )Údeferring_hooked_producerz¨
A producer that will call <function> when it empties,.
with an argument of the number of bytes produced. Useful
for logging/instrumentation purposes.
c C s || _ || _d| _d| _d S )Nr r )r ÚfunctionÚbytesr )r r r0 r r r r x s z"deferring_hooked_producer.__init__c C sR | j rJ| j ¡ }|tkrtS |s4d | _ | | j¡ n| jt|7 _|S dS d S r, )r r r
r0 r1 r )r Úresultr r r r ~ s
zdeferring_hooked_producer.moreNr" r r r r r/ q s r/ c @ s0 e Zd ZdZdd Zdd Zdd Zdd Zd
S )Údeferring_http_requesta The medusa http_request class uses the default set of producers in
medusa.producers. We can't use these because they don't know anything
about deferred responses, so we override various methods here. This was
added to support tail -f like behavior on the logtail handler c O sN t t j| j¡}| ¡ }d}d}d}| jdkrT|dkrNd| krDd}qRd| d<