繁体   English   中英

subprocess.call nohup & - 不在后台运行进程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM