Я устанавливаю веб-скребок на Heroku, используя Flask, Celery и PhantomJS (Selenium).Скребок работает на моем локальном компьютере (с предупреждением, что PhantomJS устарел), но Celery зависает на Heroku, когда я начинаю чистку.
Я установил веб-драйверы через buildpack: https://github.com/stomita/heroku-buildpack-phantomjs. Я также пытался использовать драйверы Chromeдля Selenium, но то же самое - сельдерей замерзает (видно из логов, что оно не продолжается).
Некоторые коды на моем сервере.py:
app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = os.environ['REDIS_URL']
app.config['CELERY_RESULT_BACKEND'] = os.environ['REDIS_URL']
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
@celery.task
def task_scrape(url):
return do_scrape(url, standalone=False)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/scrape', methods=['POST'])
def scrape():
url = request.get_json()['url']
task = task_scrape.delay(url)
return jsonify({ 'taskid' : task.id })
Некоторые коды в моем app.py (который выполняет фактическую проверку):
def render_type2_page(url):
driver = webdriver.PhantomJS()
driver.get(url)
time.sleep(3)
r = driver.page_source
driver.quit()
return r
Ожидаемый результат:что журналы показывают, что работник сельдерея записывает очищенные данные в память, которая вскоре будет загружена как csv.Примерно так:
[2019-07-03 01:13:36,036: WARNING/ForkPoolWorker-4] [*] Writing item # 2354187
[2019-07-03 01:13:37,269: WARNING/ForkPoolWorker-4] [*] Writing item # 2410452
[2019-07-03 01:13:38,505: WARNING/ForkPoolWorker-4] [*] Writing item # 2307212
[2019-07-03 01:13:39,844: WARNING/ForkPoolWorker-4] [*] Writing item # 2307709
[2019-07-03 01:13:41,055: WARNING/ForkPoolWorker-4] [*] Writing item # 2330733
[2019-07-03 01:13:42,283: WARNING/ForkPoolWorker-4] [*] Writing item # 2400294
[2019-07-03 01:13:43,501: WARNING/ForkPoolWorker-4] [*] Writing item # 2277081
[2019-07-03 01:13:44,729: WARNING/ForkPoolWorker-4] [*] Writing item # 2306055
[2019-07-03 01:13:45,991: WARNING/ForkPoolWorker-4] [*] Writing item # 2329127
[2019-07-03 01:13:47,312: WARNING/ForkPoolWorker-4] [*] Writing item # 2390199
[2019-07-03 01:13:48,545: WARNING/ForkPoolWorker-4] [*] Writing item # 2400295
[2019-07-03 01:13:49,797: WARNING/ForkPoolWorker-4] [*] Writing item # 2328693
Но фактический результат - время ожидания Селена, и работник сельдерея вообще не выполняет никакой работы.