[英]subprocess.call nohup & - doesn't run process in background
我有一个运行 Scrapy 蜘蛛的 function(Django 管理员)。 function 正常工作。 我现在要做的是让它成为非阻塞的。
这按预期工作 - 我需要等待 SH 脚本完成。 所以基本上我点击这个动作,浏览器正在等待抓取结束。
subprocess.call([settings.CRAWL_SH_ABS_PATH, "db_profiles_spider", "ids", ids])
我希望它是非阻塞的,以便浏览器立即刷新。
我试过这个:
subprocess.call(["nohup",settings.CRAWL_SH_ABS_PATH, "db_profiles_spider", "ids", ids, '&'])
但它似乎正在阻塞,浏览器等待响应。 为什么? 我怎样才能让它发挥作用?
&
是 shell 所以试试这样:
cmd = ' '.join(["nohup", settings.CRAWL_SH_ABS_PATH, "db_profiles_spider",
"ids", ids, '&'])
subprocess.call(cmd, shell=True)
对我来说,它也可以在不使用nohup
的情况下使用。
您还可以创建一个线程并在该线程中运行命令。 也可以os.fork()
并在子进程中运行命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.