os.fork()
命令在windows下不受支持,并出现以下错误:
AttributeError: 'module' object has no attribute 'fork'
所以一般的问题是如何在Windows下运行包含对os.fork()
调用的脚本?。我不介意使用一些只模拟行为和运行慢得多的东西,它只用于测试。我也不想改变脚本,因为它是第三方模块。
为了给您一个更广阔的视角,我尝试在Windows上使用模块rq
a.k.aredis queue
。最后,我将在heroku服务器上运行代码,这是一台Linux机器,但是在web应用程序的开发过程中,我使用的是Windows。
在windows上,可以使用python安装cygwin。这个python安装将有支持os.fork()调用的os模块。
导入一个包装器,该包装器在名为fork的函数中有条件地包装适当的子流程调用,并将其添加到os命名空间中。
可能是联系供应商并指出os.fork不是您的首选选项。
在没有
fork()
的系统(如Windows)上模拟fork()
是不容易的。如果代码只使用fork()
以exec
启动新进程,则可以将其移植为使用subprocess
。但是这个doesn't appear to be the case在rq中,所以您有几个选项:将
rq
端口连接到Windows,或请其他人为您执行此操作。移植调用fork()
的代码部分的最简单方法可能是使用multiprocessing
模块。但是,您仍然需要替换依赖于Unix的代码的其他部分,例如在timeouts
模块中使用signal.alarm()
。在Cygwin下使用Python,它模拟一个完全功能的(尽管是slowwish)
fork()
,因此Cygwin Python有一个工作的os.fork()
。注意,要获得os.fork()
,您需要使用Cygwin构建的Python,比如Cygwin发布的Python,而而不是只需在Cygwin下运行普通的Windows Python。在虚拟机上运行的Linux上测试应用程序。
在这些不愉快的选择中,我推荐最后一个。
相关问题 更多 >
编程相关推荐