You should not use subprocess in a web2py application (if you really
need too, look into the admin/controllers/shell.py) but you can use it
in a web2py program running from shell (web2py.py -R myprogram.py).

Massimo

On Aug 20, 7:01 am, Phyo Arkar <phyo.arkarl...@gmail.com> wrote:
> well
>
> lets say i have about a thounsand files to be proccessed  .. i need to
> extract text out of them , whatever file type it is (i use Linux
> "strings") command .
>
> i want to do in multi processed way , which works on multi-core pcs too.
>
> this is my current implementation :
>
> import subprocess,shlex
>
> def __forcedParsing(fname):
>         cmd = 'strings "%s"' % (fname)
>         #print cmd
>         args= shlex.split(cmd)
>         try:
>                 sp = subprocess.Popen( args, shell = False, stdout =
> subprocess.PIPE, stderr = subprocess.PIPE )
>                 out, err = sp.communicate()
>         except OSError:
>                 print "Error no %s  Message %s" % 
> (OSError.errno,OSError.message)
>                 pass
>
>         if sp.returncode== 0:
>                 #print "Processed %s" %fname
>                 return out
>
> def parseDocs():
>         rows_to_parse = [i for i in range( 0,len(SESSION.all_docs))]
>         row_ids = [x[0] for x in SESSION.all_docs  ]
>         res=[]
>         for rowID in rows_to_parse:
>
>                 file_id, fname, ftype, dir  = SESSION.all_docs[int( rowID ) ]
>                 fp = os.path.join( dir, fname )
>                 res.append(__forcedParsing(fp))
>
> well the problem is i need output from subprocess so i have to read
> using sp.communicate(). i need that to be multiprocessed (via forking?
> poll?)
>
> so here are my thoughs :
>
> 1) without using fork() ,  could I  do multiple ajax posts by
> iterating the huge list of files at client side to server   , each
> processes will be multi-threaded because of Rocket right? But may this
> suffer performace issue on client side?
>
> 2) Forking Current implementation, and read output via polling?
> subprocess.poll()
>
> any ideas?

Reply via email to