25
25
import tarfile
26
26
import tempfile
27
27
import threading
28
- import logging
29
28
import subprocess
30
29
31
30
# create a logger for this server.
32
- logging .basicConfig (
33
- level = logging .DEBUG ,
34
- format = '%(asctime)s %(name)-12s %(levelname)-8s %(message)s' ,
35
- datefmt = '%m-%d %H:%M' ,
36
- filename = 'moose_server.log' ,
37
- filemode = 'a'
38
- )
39
- console = logging .StreamHandler ()
40
- console .setLevel (logging .DEBUG )
41
- formatter = logging .Formatter ('%(name)-12s: %(levelname)-8s %(message)s' )
42
- console .setFormatter (formatter )
43
- _logger = logging .getLogger ('' )
44
- _logger .addHandler (console )
31
+ import logging
32
+ logger_ = logging .getLogger ('moose.server' )
45
33
46
34
__all__ = [ 'serve' ]
47
35
@@ -133,7 +121,7 @@ def prefix_data_with_size(data):
133
121
def signal_handler (signum , frame ):
134
122
global stop_all_
135
123
global sock_
136
- _logger .info ( "User terminated all processes." )
124
+ logger_ .info ( "User terminated all processes." )
137
125
stop_all_ = True
138
126
# sock_.shutdown( socket.SHUT_RDWR )
139
127
sock_ .close ()
@@ -149,14 +137,14 @@ def send_msg(msg, conn, prefix='LOG'):
149
137
if not msg .strip ():
150
138
return False
151
139
if prefix != 'TAB' :
152
- _logger .debug (msg )
140
+ logger_ .debug (msg )
153
141
else :
154
- _logger .debug ( 'Sending msg with size %d' % len (msg ))
142
+ logger_ .debug ( 'Sending msg with size %d' % len (msg ))
155
143
msg = '<%s>%s' % (prefix , msg )
156
144
conn .sendall (prefix_data_with_size (msg ))
157
145
158
146
def run (cmd , conn , cwd = None ):
159
- _logger .info ( "Executing %s" % cmd )
147
+ logger_ .info ( "Executing %s" % cmd )
160
148
oldCWD = os .getcwd ()
161
149
if cwd is not None :
162
150
os .chdir (cwd )
@@ -176,7 +164,7 @@ def recv_input(conn, size=1024):
176
164
try :
177
165
d = conn .recv (prefixL_ , socket .MSG_WAITALL )
178
166
except Exception :
179
- _logger .error ("MSG FORMAT: %d bytes are size of msg." % prefixL_ )
167
+ logger_ .error ("MSG FORMAT: %d bytes are size of msg." % prefixL_ )
180
168
continue
181
169
d , data = int (d ), b''
182
170
while len (data ) < d :
@@ -186,12 +174,12 @@ def recv_input(conn, size=1024):
186
174
def writeTarfile ( data ):
187
175
tfile = os .path .join (tempfile .mkdtemp (), 'data.tar.bz2' )
188
176
with open (tfile , 'wb' ) as f :
189
- _logger .info ( "Writing %d bytes to %s" % (len (data ), tfile ))
177
+ logger_ .info ( "Writing %d bytes to %s" % (len (data ), tfile ))
190
178
f .write (data )
191
179
# Sleep for some time so that file can be written to disk.
192
180
time .sleep (0.1 )
193
181
if not tarfile .is_tarfile (tfile ):
194
- _logger .warn ( 'Not a valid tar file: %s' % tfile )
182
+ logger_ .warn ( 'Not a valid tar file: %s' % tfile )
195
183
return None
196
184
return tfile
197
185
@@ -210,7 +198,7 @@ def streamer_client(socketPath, conn):
210
198
# Connect to running socket server.
211
199
global stop_streamer_
212
200
stop = False
213
- _logger .debug ( "Trying to connect to server at : %s" % socketPath )
201
+ logger_ .debug ( "Trying to connect to server at : %s" % socketPath )
214
202
while not os .path .exists ( socketPath ):
215
203
#print( 'socket %s is not available yet.' % socketPath )
216
204
time .sleep (0.1 )
@@ -222,12 +210,12 @@ def streamer_client(socketPath, conn):
222
210
try :
223
211
stClient .connect (socketPath )
224
212
except socket .error as e :
225
- _logger .warning ('Could not connect: %s' % e )
213
+ logger_ .warning ('Could not connect: %s' % e )
226
214
return
227
215
228
216
# send streaming data back to client. The streamer send fixed size messages
229
217
# of 1024/2048 bytes each (see the c++ implmenetation).
230
- _logger .info ( "Socket Streamer is connected with server." )
218
+ logger_ .info ( "Socket Streamer is connected with server." )
231
219
stClient .settimeout (0.05 )
232
220
send_msg ( b'Now streaming table data.' , conn , 'TAB' )
233
221
while not stop :
@@ -258,7 +246,7 @@ def run_file(filename, conn, cwd=None):
258
246
stop_streamer_ [streamerThread .name ] = True
259
247
streamerThread .join ( timeout = 1 )
260
248
if streamerThread .is_alive ():
261
- _logger .error ( "The socket streamer client is still running..." )
249
+ logger_ .error ( "The socket streamer client is still running..." )
262
250
263
251
def extract_files (tfile , to ):
264
252
userFiles = []
@@ -267,11 +255,11 @@ def extract_files(tfile, to):
267
255
try :
268
256
f .extractall ( to )
269
257
except Exception as e :
270
- _logger .warn ( e )
258
+ logger_ .warn ( e )
271
259
# now check if all files have been extracted properly
272
260
for f in userFiles :
273
261
if not os .path .exists (f ):
274
- _logger .error ( "File %s could not be extracted." % f )
262
+ logger_ .error ( "File %s could not be extracted." % f )
275
263
return userFiles
276
264
277
265
def prepareMatplotlib ( cwd ):
@@ -288,14 +276,14 @@ def sendResults(tdir, conn, notTheseFiles):
288
276
resfile = os .path .join (resdir , 'results.tar.bz2' )
289
277
with tarfile .open ( resfile , 'w|bz2' ) as tf :
290
278
for f in find_files (tdir , ext = 'png' ):
291
- _logger .info ( "Adding file %s" % f )
279
+ logger_ .info ( "Adding file %s" % f )
292
280
tf .add (f , os .path .basename (f ))
293
281
294
282
time .sleep (0.01 )
295
283
# now send the tar file back to client
296
284
with open (resfile , 'rb' ) as f :
297
285
data = f .read ()
298
- _logger .info ( 'Total bytes to send to client: %d' % len (data ))
286
+ logger_ .info ( 'Total bytes to send to client: %d' % len (data ))
299
287
send_bz2 (conn , data )
300
288
shutil .rmtree (resdir )
301
289
@@ -348,11 +336,11 @@ def savePayload( conn ):
348
336
349
337
def handle_client (conn , ip , port ):
350
338
isActive = True
351
- _logger .info ( "Serving request from %s:%s" % (ip , port ) )
339
+ logger_ .info ( "Serving request from %s:%s" % (ip , port ) )
352
340
while isActive :
353
341
tarfileName , nBytes = savePayload (conn )
354
342
if tarfileName is None :
355
- _logger .warn ( "Could not recieve data." )
343
+ logger_ .warn ( "Could not recieve data." )
356
344
isActive = False
357
345
if not os .path .isfile (tarfileName ):
358
346
send_msg ("[ERROR] %s is not a valid tarfile. Retry" % tarfileName , conn )
@@ -379,9 +367,9 @@ def start_server( host, port, max_requests = 10 ):
379
367
sock_ .setsockopt (socket .SOL_SOCKET , socket .SO_REUSEADDR , 1 )
380
368
try :
381
369
sock_ .bind ( (host , port ))
382
- _logger .info ( "Server created %s:%s" % (host ,port ) )
370
+ logger_ .info ( "Server created %s:%s" % (host ,port ) )
383
371
except Exception as e :
384
- _logger .error ( "Failed to bind: %s" % e )
372
+ logger_ .error ( "Failed to bind: %s" % e )
385
373
quit (1 )
386
374
387
375
# listen upto 10 of requests
@@ -392,7 +380,7 @@ def start_server( host, port, max_requests = 10 ):
392
380
sock_ .settimeout (10 )
393
381
try :
394
382
conn , (ip , port ) = sock_ .accept ()
395
- except socket .timeout as e :
383
+ except socket .timeout :
396
384
continue
397
385
sock_ .settimeout (0.0 )
398
386
t = threading .Thread (target = handle_client , args = (conn , ip , port ))
0 commit comments