¿Cómo ejecutar el script python con os.fork en windows?

os.fork() comando os.fork() no es compatible con Windows y da el siguiente error:

 AttributeError: 'module' object has no attribute 'fork' 

Entonces, la pregunta general es ¿Cómo ejecutar un script que contenga una llamada a os.fork() en Windows? . No me importa usar algo que solo simule el comportamiento y se ejecute mucho más lento, es solo para pruebas. También prefiero no cambiar la secuencia de comandos ya que es un módulo de terceros.

Para darle una perspectiva más amplia, estoy tratando de usar el módulo rq aka redis queue en Windows. Finalmente, ejecutaré el código en el servidor heroku, que es una máquina Linux, pero durante el desarrollo de la aplicación web, estoy usando Windows.

No hay una manera fácil de emular fork() en sistemas que no lo tienen, como Windows. Si el código solo usa fork() para iniciar un nuevo proceso con exec , puede portarlo para usar un subprocess . Pero este no parece ser el caso en rq, por lo que tiene varias opciones:

  1. Puerto rq a Windows, o pídale a alguien que lo haga por usted. La forma más fácil de portar la parte del código que llama a fork() podría ser mediante el uso del módulo de multiprocessing . Sin embargo, aún deberá reemplazar otras partes del código que dependen de Unix, como los usos de signal.alarm() en el módulo de timeouts .

  2. Use Python debajo de Cygwin, que emula una fork() aunque completamente funcional (aunque lenta fork() , por lo que Cygwin Python tiene un sistema operativo os.fork() . Tenga en cuenta que para obtener os.fork() , necesitará usar un Python construido por Cygwin, como el que Cygwin envía, y no simplemente ejecutar el Python de Windows normal bajo Cygwin.

  3. Probar la aplicación en un Linux que se ejecuta en una máquina virtual.

Entre estas infelices opciones recomendaría la última.

Importe un contenedor que envuelva condicionalmente la llamada de subproceso apropiada en una función llamada fork y la agregue al espacio de nombres del sistema operativo.

Posiblemente puede ser una opción ponerse en contacto con el proveedor y señalar que os.fork no es una opción preferida para usted.

En Windows, puedes instalar cygwin con python. Esta instalación de python tendrá un módulo os que admitirá la llamada os.fork ().