1
+ import __main__
1
2
import time
2
3
import heapq
4
+ import errno
5
+ import logging
3
6
4
7
8
+ log = logging .getLogger ("asyncio" )
9
+
5
10
def coroutine (f ):
6
11
return f
7
12
@@ -24,7 +29,7 @@ def call_later(self, delay, callback, *args):
24
29
def call_at (self , time , callback , * args ):
25
30
# self.q.append((callback, args))
26
31
# self.cnt is workaround per heapq docs
27
- # print ("Scheduling", (time, self.cnt, callback, args))
32
+ log . debug ("Scheduling %s " , (time , self .cnt , callback , args ))
28
33
heapq .heappush (self .q , (time , self .cnt , callback , args ))
29
34
# print(self.q)
30
35
self .cnt += 1
@@ -42,6 +47,8 @@ def run_forever(self):
42
47
while True :
43
48
if self .q :
44
49
t , cnt , cb , args = heapq .heappop (self .q )
50
+ log .debug ("Next task to run: %s" , (t , cnt , cb , args ))
51
+ # __main__.mem_info()
45
52
tnow = self .time ()
46
53
delay = t - tnow
47
54
if delay > 0 :
@@ -57,20 +64,22 @@ def run_forever(self):
57
64
try :
58
65
if args == ():
59
66
args = (None ,)
60
- print ( "Send args:" , args )
67
+ log . debug ( "Gen send args: %s " , args )
61
68
ret = cb .send (* args )
62
- print ( "ret: " , ret )
69
+ log . debug ( "Gen yield result: %s " , ret )
63
70
if isinstance (ret , SysCall ):
64
71
if isinstance (ret , Sleep ):
65
72
delay = ret .args [0 ]
66
73
elif isinstance (ret , IORead ):
74
+ # self.add_reader(ret.obj.fileno(), lambda self, c, f: self.call_soon(c, f), self, cb, ret.obj)
75
+ # self.add_reader(ret.obj.fileno(), lambda c, f: self.call_soon(c, f), cb, ret.obj)
67
76
self .add_reader (ret .obj .fileno (), lambda f : self .call_soon (cb , f ), ret .obj )
68
77
continue
69
78
elif isinstance (ret , IOWrite ):
70
79
self .add_writer (ret .obj .fileno (), lambda f : self .call_soon (cb , f ), ret .obj )
71
80
continue
72
81
except StopIteration as e :
73
- print ( cb , " finished" )
82
+ log . debug ( "Gen finished: %s" , cb )
74
83
continue
75
84
#self.q.append(c)
76
85
self .call_later (delay , cb , * args )
@@ -99,22 +108,22 @@ def __init__(self):
99
108
self .poller = select .epoll (1 )
100
109
101
110
def add_reader (self , fd , cb , * args ):
102
- print ("add_reader" )
111
+ log . debug ("add_reader%s" , ( fd , cb , args ) )
103
112
self .poller .register (fd , select .EPOLLIN , (cb , args ))
104
113
105
114
def add_writer (self , fd , cb , * args ):
106
- print ("add_writer" )
115
+ log . debug ("add_writer%s" , ( fd , cb , args ) )
107
116
self .poller .register (fd , select .EPOLLOUT , (cb , args ))
108
117
109
118
def wait (self , delay ):
110
- print ("epoll.wait" , delay )
119
+ log . debug ("epoll.wait(%d) " , delay )
111
120
if delay == - 1 :
112
121
res = self .poller .poll (- 1 )
113
122
else :
114
123
res = self .poller .poll (int (delay * 1000 ))
115
- print ( "poll: " , res )
124
+ log . debug ( "epoll result: %s " , res )
116
125
for cb , ev in res :
117
- print ("Calling %s%s" % ( cb [0 ], cb [1 ]) )
126
+ log . debug ("Calling IO callback: %s%s" , cb [0 ], cb [1 ])
118
127
cb [0 ](* cb [1 ])
119
128
120
129
@@ -164,11 +173,11 @@ def __init__(self, s):
164
173
self .s = s
165
174
166
175
def readline (self ):
167
- print ( " readline" )
176
+ log . debug ( "StreamReader. readline() " )
168
177
s = yield IORead (self .s )
169
- print ( " after IORead" )
178
+ log . debug ( "StreamReader.readline(): after IORead: %s" , s )
170
179
res = self .s .readline ()
171
- print ( " readline res:" , res )
180
+ log . debug ( "StreamReader. readline(): res: %s " , res )
172
181
return res
173
182
174
183
@@ -186,15 +195,17 @@ def write(self, buf):
186
195
187
196
188
197
def open_connection (host , port ):
198
+ log .debug ("open_connection(%s, %s)" , host , port )
189
199
s = _socket .socket ()
190
200
s .setblocking (False )
191
201
ai = _socket .getaddrinfo (host , port )
192
202
addr = ai [0 ][4 ]
193
203
try :
194
204
s .connect (addr )
195
205
except OSError as e :
196
- print (e .args [0 ])
197
- print ("After connect" )
206
+ if e .args [0 ] != errno .EINPROGRESS :
207
+ raise
208
+ log .debug ("open_connection: After connect" )
198
209
s = yield IOWrite (s )
199
- print ( " After iowait:" , s )
210
+ log . debug ( "open_connection: After iowait: %s " , s )
200
211
return StreamReader (s ), StreamWriter (s )
0 commit comments