[pyar] Multiprocessing y Bottle

Martin Cerdeira martincerdeira en gmail.com
Jue Nov 3 13:39:33 ART 2011


Como va, lista? Estoy desarrollando un proyecto y, me encontré con
algo que no pude resolver anoche (me venció el sueño) y, quisiera
tomar un "atajo" preguntando, porque, capaz lo estoy encarando mal.

Resumiendo, tengo basicamente una página que está hecha con Bottle y,
en un momento, con un botón llamo, mediante subprocess, a un comando
de Django. En realidad, que llame a Django, es irrelevante para lo que
sucede, ya que lo probé con una función dummy y me pasa lo mismo.
Pongo un cacho de código:

def django_runserver_thread():
    subprocess.call([sys.executable, os.path.join(PROJECT_PATH,
'manage.py'), 'runserver', '8000'])

def django_runserver(PROJECT_PATH):
    curr_path = os.getcwd()
    thread = multiprocessing.Process(target=django_runserver_thread)
    thread.start()
    first = True
    while thread.is_alive():
      if first:
          first = False
          os.chdir(curr_path)
          webbrowser.open('http://localhost:8000')
      thread.join(.3)

Lo que quiero hacer es, llamar al runserver de django y, luego llamar
a un webbrowser para que lo abra. El tema es que, cuando lanzo el
thread, algo raro pasa en bottle, es como que se reiniciara y nunca
ejecuta la funcion django_runserver_thread(), le doy ctrl+c, y ahi
recién la llama.

Para descarta que tuviera que ver con Django, probé sacar la llamada a
django, le metí un sleep en la función que quiero que ejecute en otro
hilo, pero pasa exactamente lo mismo.

Saben si hay alguna limitación para lanzar threads (que en mi caso son
con multiprocessing) desde dentro de una aplicación Bottle??? Algua
idea??

Mil millones de gracias!
-------------------------------------
Martín Cerdeira - Software Developer
[web] http://www.codmacs.blogspot.com/
()  ascii ribbon campaign
/\  www.asciiribbon.org



More information about the pyar mailing list