在Flask中运行python子进程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Flask中运行python子进程相关的知识,希望对你有一定的参考价值。
我有一个以这种方式运行爬行过程的Flask Web应用程序:
在终端选项卡1上:
$ cd /path/to/scraping
$ scrapyrt
在终端选项卡2上:
$ python app.pp
在app.py
:
params = {
'spider_name': spider,
'start_requests':True
}
response = requests.get('http://localhost:9080/crawl.json', params)
print ('RESPONSE',response)
data = json.loads(response.text)
哪个有效。
现在我想把所有东西都搬到qazxsw poi,为此我试过了:
app.py
这开始扭曲,像这样:
import subprocess
from time import sleep
try:
subprocess.check_output("scrapyrt", shell=True, cwd='path/to/scraping')
except subprocess.CalledProcessError as e:
raise RuntimeError("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
sleep(3)
params = {
'spider_name': spider,
'start_requests':True
}
response = requests.get('http://localhost:9080/crawl.json', params)
print ('RESPONSE',response)
data = json.loads(response.text)
但爬行过程挂起,不会通过。
我在这里想念的是什么?
答案
您是否考虑过使用APScheduler或类似的调度程序?您可以使用crons或间隔运行代码,并且它与Flask很好地集成。
看看这里:2018-02-03 17:29:35-0200 [-] Log opened.
2018-02-03 17:29:35-0200 [-] Site starting on 9080
2018-02-03 17:29:35-0200 [-] Starting factory <twisted.web.server.Site instance at 0x104effa70>
这是一个例子:
http://apscheduler.readthedocs.io/en/stable/userguide.html
以上是关于在Flask中运行python子进程的主要内容,如果未能解决你的问题,请参考以下文章
使用 asyncio 将 bash 作为 Python 的子进程运行,但 bash 提示被延迟