私は基本的に同じコードベースで動作する2つのサイトを持っていますが、設定の違いはわずかです。各サイトはDjangoに組み込まれており、WordPressブログは統合されています。Celeryタスクを適切な設定で確実に実行するにはどうすればよいですか?
各サイトでは、WordPressのブログ投稿をインポートしてDjangoデータベースに保存する必要があります。ユーザーが投稿を公開すると、WordPressはDjango側のWebhook URLにヒットします。このURLは、JSON版のポストを取得してインポートするCeleryタスクを開始します。
私の最初の考えは、各サイトがmanage.py celeryd
という独自のインスタンスを実行でき、それぞれが独自のvirtualenv
であり、2つのサイトがお互いに離れているということでした。それぞれは別々の起動スクリプトでデーモン化されています。
しかし、何とか衝突しているように見えます。一度に1つずつ実行できますが、両方が実行されている場合、1つのインスタンスはタスクを受け取らないか、間違った設定(この場合はそれぞれWORDPRESS_BLOG_URL
の設定)でタスクが実行されます。
私はRedisキューを使用していますが、それは違いがあります。私はここで間違って何をしていますか?
これはRedisで動作しますか?ドキュメントはこれがAMPQだけのように聞こえるようにします。コマンドラインでCELERY_DEFAULT_QUEUEを設定に追加し、-Q(キュー名付き)を追加しても、これまでのところ同じ問題が発生しています。 –
私は自分の答えを編集しました。そうです、その設定はAMPQブローカーのためだけです。 –
私はそのトリックをしたと思います。私は 'CELERY_REDIS_ *'設定もタスクルーティングを設定すると仮定しましたが、 'BROKER_UR'Lは結果ストアから独立して設定する必要があります。 –