Запуск сельдерея и PhantomJS на Heroku - PullRequest
0 голосов
/ 02 июля 2019

Я устанавливаю веб-скребок на 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

Но фактический результат - время ожидания Селена, и работник сельдерея вообще не выполняет никакой работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...