ChromeとChromeDriverの互換性 Seleniumでブラウザ(Chrome)の自動操作をしようとすると、ChromeDriverを入れるかと思います。ChromeDriverとはブラウザをプログラムで制御するためのライブラリの様なものです。(と認識しています) ただしご存じの通りChromeの公式アップデートは頻繁に起こります。するとChromeDriverがChromeブラウザの更新に追いつかず、せっかくスクレイピングするプログラムを作成してもエラーを吐く場合があります。 前回こちらでPythonからSeleniumを行うプログラムを作成しましたが、気がついたらChromeとChromeDriverの互換性に問題が生じてしまいエラーを吐いていました。 selenium.common.exceptions.SessionNotCreatedException:... 御覧になる | 御シェアする
カテゴリー: Python
PythonでSeleniumする
PythonとSeleniumでスクショをS3にアップロードするLambdaを作る
PythonとSelenimumで検索結果のスクリーンショットを撮る
【CloudWatch/Lambda/Slack/AWS CLI】を使ってEC2を監視・通知・停止する
RabbitMQでワークキューを使う #2
ご注文はRabbitMQで並列処理ですか? #1
目標 今回の目標はRabbitMQを使い並列処理クラスタを構築する事です。昨今のスパコンは一つのCPUの性能を高めるよりも、汎用的なCPUを大量に並べて処理能力を上げる方が一般的です。 例えば10秒掛かる処理が10個あるとして、1台の計算機で全てやろうとすると100秒掛かりますが、2台の計算機なら50秒で終わりますし、10台の計算機なら10秒で終わります。つまり並列処理をさせることで全体の計算に掛かる時間を短くするということを実現したいと思います。 まずメッセージングミドルウェアとは RabbitMQはメッセージングミドルウェアと呼ばれていますが、メッセージングミドルウェアというのは異なるアプリ同士が双方向に情報をやり取りするためのソフトウェアのことです。MOM(Message-oriented-middleware)を使うと次のような良い事があります。※日本語だとメッセージ指向ミドルウェアといいます。 メッセージキューイングを利用した非同期処理 仮にMOMを使わないECサイトのようなWebアプリを作ったとします。その場合ざっくりとですが次の様な流れになるかと思います。 エンドユーザは商品をカートに入れ、フォームを入力して購入ボタンをクリックします。購入情報が管理サーバに送信され、ユーザ認証やデータ書き込みなどのDBとやり取りをしたり、在庫チェックや発送準備を行います。2.の処理が完了したことを確認しエンドユーザにレスポンスを返して購入が完了する。 これの何処に問題があるのかと言いますと、2.の処理中エンドユーザはひたすら待ち続けなければならないという点です。 そこでキューというデータ領域に購入情報をストアさせておき、順次管理サーバが処理していくというのが非同期処理の良い所です。 保守性の高い開発 又、MOMを利用するとサービス毎に開発が可能になります。ここでもECサイトを例にしますが、1.と2.の処理部分を順番に作っていくよりも、「1.部分は私達が作ります。最終的に~の様なメッセージを送りますので」「承知しました。ではそのメッセージに合うように2.部分は私達が作ります」と言う方が効率が良いですし、汎用性もあります。 他にもリスクを一元管理しないことによる耐障害性向上など様々なメリットがあります。 構築 RabbitMQインストール #... 御覧になる | 御シェアする