我有一个爬虫,我想运行每次一个人去链接。因为所有其他模块都在水瓶中,所以我也被告知要在烧瓶中构建这个模块。我已经在虚拟环境中安装了scrapy和selenium,并在带有root的机器上安装了全局。
当我在终点站运行爬行器时,一切正常。当我启动Flask应用程序并在浏览器中访问xx.xx.xx.xx:8080/whats时,它也可以正常工作,运行我的爬虫并为我获取文件。但是,一旦我活了下来,只要一个人去链接,它就会给我浏览器中的内部错误。
为了运行爬虫,我们必须在终端输入“刮刮爬行”。我使用Python的os模块完成了这个任务。
这是我的酒瓶代码:
import sys
from flask import request, jsonify, render_template, url_for, redirect,   session, abort,render_template_string,send_file,send_from_directory
from flask import *
#from application1 import *
from main import *
from test123 import *
import os
app = Flask(__name__)
filename = ''
app = Flask(__name__)
@app.route('/whats')
def whats():
    os.getcwd()
    os.chdir("/var/www/myapp/whats")
    //cmd = "scrapy crawl whats"
    cmd = "sudo scrapy crawl whats"
    os.system(cmd)
    return send_file("/var/www/myapp/staticcsv/whats.csv", as_attachment =True)
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080,debug=True)这是在我运行活动链接时记录在日志文件中的错误:
sh: 1: scrapy: not found**这是在命令中使用sudo时记录在日志文件中的错误(变量cmd):
sudo: no tty present and no askpass program specified**我在用uwsgi和nginx。
我如何运行这个爬虫,以便当任何人转到“XX.XX/什么”时,爬虫运行并返回csv文件?
发布于 2015-08-17 07:13:55
当您使用sudo时,启动的shell将在tty上请求一个密码-它特别不读取标准输入的这些信息。由于flask和其他web应用程序通常是独立于终端运行的,因此sudo无法请求密码,因此它寻找能够提供密码的程序。您可以在this answer中找到有关此主题的更多信息。
您找不到scrapy的原因很可能是因为您在测试中使用的交互式shell与运行flask的进程在$PATH上的差异。解决这个问题的最简单方法是在命令中给出scrapy程序的完整路径。
https://stackoverflow.com/questions/32044530
复制相似问题