Эта статья была впервые опубликована:Попал в воду - «Вспомни разовую онлайн-партию (поток) кейс (процесс)»
предисловие
Чтобы упростить шаги и процессы последующего запуска проекта сканера, 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"
}
Служба супервайзера
Добавить конфигурацию
- Добавлена файл конфигурации заданий 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
- Новый файл конфигурации 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
- Добавлен файл конфигурации вопросов 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
Изменить настройку
Измените следующие пути конфигурации искателя
-
spider-comment.conf
directory=/data/wwwroot/spider-line/amazon_comment
-
spider-comment-detail.conf
directory=/data/wwwroot/spider-line/amazon_comment
-
spider-keyword.conf
directory=/data/wwwroot/spider-line/amazon_keyword
-
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
Фокус
Основное содержание этого запуска следующее:
- Комбинированные API и запланированные задачи, объединенные в проекты API
- Службы процессов, связанные с поисковым роботом, передаются демону супервизора для управления.
- Запланированные задачи передаются из пакета Python apscheduler в crontab для унифицированного управления.
- Задача обратного вызова использует пакет grequests и отправляется в виде сопрограммы для повышения эффективности отправки.
Суммировать
При запуске онлайн, следуя этому процессу, понятно, что делать сначала, а что потом, что значительно повышает эффективность запуска и снижает процент ошибок. Поскольку сопутствующие услуги могут быть приостановлены на некоторое время, и поскольку бизнес простаивает при выходе в Интернет, даже если некоторые услуги будут приостановлены, это мало повлияет на бизнес. Если это сценарий с высокими бизнес-требованиями, вам необходимо переосмыслить план плавного онлайн-запуска.
следовать за
Когда я был дома ранним утром и ждал, когда начнутся задачи в проекте, я зашел на сервер понаблюдать и обнаружил, что некоторые службы сообщают об ошибках, я проверил и обнаружил, что пакет, который должен быть установлен, не установлен. Думается, что даже если документ онлайн-процесса будет написан заранее, какие-то упущения будут, не говоря уже о сценарии запуска и переключения различных сервисов из памяти без записи ничего? Это не течет больше, спать позже
Прибыв в компанию на следующий день, я проверил бизнес, связанный с другими модулями, которые вчера были подключены к сети, и обнаружил, что проблем нет. Мгновенно я почувствовал, что когда содержание онлайн-проекта больше и сложнее, все равно необходимо написать документ в качестве онлайн-руководства.
зрение
Я надеюсь, что в будущем будет время сделать некоторые автоматизированные инструменты, чтобы избежать таких утомительных операций.