Примечание о случае со стороны линии (потока) (Чэн)

сервер

Эта статья была впервые опубликована:Попал в воду - «Вспомни разовую онлайн-партию (поток) кейс (процесс)»

предисловие

Чтобы упростить шаги и процессы последующего запуска проекта сканера, API сканера и проект временной задачи интегрированы.Поскольку задействовано много связанных служб, также необходимо соблюдать порядок изменения служб и их запуска. (иначе службы, которые должны быть запущены, не открыты, будут затронуты последующие сопутствующие службы, будет неловко), поэтому перед выходом в онлайн потребовалось почти утро, чтобы разобраться с онлайн-процессом. Будьте в состоянии обеспечить некоторую ясность при выходе в эфир.

Он-лайн шаги

установка пакета

Установить grequests, пакеты itemadapter

Технологическая операция

закрыть процесс

Удалить все процессы задач python на сервере

ps -ef | grep _task| grep -v grep | awk '{print $2}' | xargs kill -9

Удалить процесс pythoncallback на сервере

ps -ef | grep _callback| grep -v grep | awk '{print $2}' | xargs kill -9

Удалить процесс API-интерфейса сканера на сервере

ps -ef | grep gunicorn| grep -v grep | awk '{print $2}' | xargs kill -9

Удалить процесс сельдерея искателя на сервере

ps -ef | grep _celery| grep -v grep | awk '{print $2}' | xargs kill -9

Строительные коды

TODO

начать процесс

Запустите процесс API сканера

Сначала создайтеtouch /var/log/gunicorn.log

затем введитеcd /data/wwwroot/spiderapi-line

Выполнение заказа:gunicorn -w 3 -b 0.0.0.0:5000 --threads 16 -k gevent -t 1000 --access-logfile /var/log/gunicorn.log -D api:app

Запустите процесс сельдерея
nohup celery -A app.celeries.listing_celery worker -l info &
nohup celery -A app.celeries.comment_celery worker -l info &
nohup celery -A app.celeries.small_cate_celery worker -l info &
nohup celery -A app.celeries.keyword_celery worker -l info &
nohup celery -A app.celeries.qa_celery worker -l info &
Запустите процесс сканирования

Начать рейтинг малого класса:nohup scrapy crawl smallCategorySpider &

Запустите процесс обратного вызова задачи
nohup /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m comment -t callback &
nohup /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m listing -t callback &
nohup /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m small_cate -t callback &
nohup /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m keyword -t callback &
nohup /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m qa -t callback &

база данных

Mongo

Создайте новую библиотеку spider_amz_qa, добавьте пользовательскую таблицу и добавьте новую строку данных.

{
    "appid" : "ac539beebe55e46db51daacef575e336",
    "callback" : "http://cron.velocityecp.cn/api/spider/callback/qa",
    "uid" : "0"
}

Создайте новую пользовательскую библиотеку, добавьте новую пользовательскую таблицу и добавьте новую строку данных.

{
    "appid" : "ac539beebe55e46db51daacef575e336",
    "key" : "8aeb5d1b4e4484645f78ad30dddec6bc"
}

Служба супервайзера

Добавить конфигурацию
  1. Добавлена ​​файл конфигурации заданий QA ECP, имя файла: velocityecp-spider-qa.conf
[program:velocityecp-spider-qa-task]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/php/bin/php /data/wwwroot/ecpcron-line/artisan queue:work redis --queue=spider:qa:task --sleep=5 --tries=3
autostart=true
autorestart=true
user=root
numprocs=4
redirect_stderr=true
stdout_logfile=/var/log/supervisor/laravel-queue.log
  1. Новый файл конфигурации QA сканера, имя файла: spider-qa.conf
[program:spider-qa-task]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/python3.6.6/bin/scrapy crawl amazonQASpider -s JOBDIR=/var/log/crawler/comment_qa
directory=/data/wwwroot/spider-line/amazon_qa
autostart=true
autorestart=true
user=root
numprocs=3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/spider-qa.log
  1. Добавлен файл конфигурации вопросов QA сканера, имя файла: spider-qa-question.conf
[program:spider-qa-question-task]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/python3.6.6/bin/scrapy crawl amazonQAQuestionSpider -s JOBDIR=/var/log/crawler/comment_qa_question
directory=/data/wwwroot/spider-line/amazon_qa
autostart=true
autorestart=true
user=root
numprocs=4
redirect_stderr=true
stdout_logfile=/var/log/supervisor/spider-qa-question.log
Изменить настройку

Измените следующие пути конфигурации искателя

  1. spider-comment.conf directory=/data/wwwroot/spider-line/amazon_comment

  2. spider-comment-detail.conf directory=/data/wwwroot/spider-line/amazon_comment

  3. spider-keyword.conf directory=/data/wwwroot/spider-line/amazon_keyword

  4. spider-listing.conf directory=/data/wwwroot/spider-line/amazon_listing

перезапустить супервизора

supervisorctl reload

supervisorctl status

Настройки кронтаба

Настроить задачу сканера crontab pythoncrontab -e

# QA爬虫任务
10 0 * * * /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m qa -t cron >> /var/log/crontab.log 2>&1

# listing爬虫任务
0 1 * * * /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m listing -t cron >> /var/log/crontab.log 2>&1

# 评论爬虫任务
30 4 * * 0,2,3,4,5,6 /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m comment -t cron >> /var/log/crontab.log 2>&1

# 关键词爬虫任务
0 4 * * * /usr/bin/python3.6.6/bin/python3 /data/wwwroot/spiderapi-line/shell.py -m keyword -t cron >> /var/log/crontab.log 2>&1

Фокус

Основное содержание этого запуска следующее:

  1. Комбинированные API и запланированные задачи, объединенные в проекты API
  2. Службы процессов, связанные с поисковым роботом, передаются демону супервизора для управления.
  3. Запланированные задачи передаются из пакета Python apscheduler в crontab для унифицированного управления.
  4. Задача обратного вызова использует пакет grequests и отправляется в виде сопрограммы для повышения эффективности отправки.

Суммировать

При запуске онлайн, следуя этому процессу, понятно, что делать сначала, а что потом, что значительно повышает эффективность запуска и снижает процент ошибок. Поскольку сопутствующие услуги могут быть приостановлены на некоторое время, и поскольку бизнес простаивает при выходе в Интернет, даже если некоторые услуги будут приостановлены, это мало повлияет на бизнес. Если это сценарий с высокими бизнес-требованиями, вам необходимо переосмыслить план плавного онлайн-запуска.

следовать за

Когда я был дома ранним утром и ждал, когда начнутся задачи в проекте, я зашел на сервер понаблюдать и обнаружил, что некоторые службы сообщают об ошибках, я проверил и обнаружил, что пакет, который должен быть установлен, не установлен. Думается, что даже если документ онлайн-процесса будет написан заранее, какие-то упущения будут, не говоря уже о сценарии запуска и переключения различных сервисов из памяти без записи ничего? Это не течет больше, спать позже

Прибыв в компанию на следующий день, я проверил бизнес, связанный с другими модулями, которые вчера были подключены к сети, и обнаружил, что проблем нет. Мгновенно я почувствовал, что когда содержание онлайн-проекта больше и сложнее, все равно необходимо написать документ в качестве онлайн-руководства.

зрение

Я надеюсь, что в будущем будет время сделать некоторые автоматизированные инструменты, чтобы избежать таких утомительных операций.