NBsystemにAPP1、APP2、APP3、APP4、APP5、APP6のクローラーがあると仮定して、つねに3クローラーをceleryで動作させて、1クローラー終わるごとに次のクローラー(APP4)を起動したい。 コードおしえて
理想的な場合は、Celeryのチェーン(chain)やチョコレート(chord)などのタスクコントロール機能を使用して、タスクの実行と順序付けを制御します。以下は、そのための基本的な設定とコード例です。
- Celeryの設定:
settings.pyファイルでCeleryの設定を行います。
python
# settings.py CELERY_BROKER_URL = 'redis://localhost:6379/0' # Redisの接続情報
- Celeryタスクの作成:
tasks.pyファイルにCeleryタスクを作成します。
python
# tasks.py from celery import Celery app = Celery('tasks', broker='redis://localhost:6379/0') @app.task def crawl_app(app_name): # アプリケーションごとのクローリング処理を実行する print(f'Crawling {app_name}') # ここにアプリケーションごとのクローリング処理を記述する
- タスクの連鎖設定: クローラーの実行順序を管理するCeleryタスクチェーンを作成します。
python
# tasks.py from celery import chain @app.task def crawl_app_sequence(): # クローラーアプリケーションの連鎖を定義する crawl_chain = chain( crawl_app.s('APP1'), crawl_app.s('APP2'), crawl_app.s('APP3'), crawl_app.s('APP4'), crawl_app.s('APP5'), crawl_app.s('APP6') ) # 連鎖を実行する result = crawl_chain.delay() return result
- Celeryワーカーの起動: Celeryワーカーを起動してタスクを実行します。
bash
celery -A your_project worker --loglevel=info
- タスクの実行: Djangoのどこかで
crawl_app_sequence()タスクを呼び出します。これにより、連鎖されたクローラータスクが実行されます。
この設定により、crawl_app_sequence()タスクが呼び出されると、crawl_app()タスクが順番に実行されます。一度に3つのタスクが実行され、1つのタスクが完了すると、次のタスクが開始されます。
関連記事

データパイプラインの構築: データの収集から保存、加工、解析までの一連の処理を自動化するデータパイプラインを構築します。この際に、タスクのスケジューリングやエラー処理なども考慮します。一般的に、ワークフローオーケストレーションツールやバッチ処理フレームワークを使用してデータパイプラインを実装します。
データパイプラインの構築には、いくつかのステップが含まれます。以下はその基本的な ...

RDSのデータベースが消えている。だれが消したか分かる方法はあるか
RDSインスタンスのデータベースが削除された場合、誰がそれを行ったかを調べるには ...

.save()って?
.save()はDjangoモデルインスタンスのメソッドで、データベースにそのイ ...

オートログオンの設定: Windowsサーバーにオートログオンを設定して、サーバーが自動的に特定のユーザーアカウントでログオンするようにします。これにより、ログオフ状態でも特定のユーザーセッションが確立され、ブラウザが起動できます。
オートログオンを設定するには、Windowsサーバーのレジストリエディタを使用し ...
ディスカッション
コメント一覧
まだ、コメントがありません