問題タブ [django-celery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8272 参照

python - redisでdjango-celeryを使用する場合のNotRegistered例外

「タスク」という名前の django アプリを作成し、*INSTALLED_APPS* に追加しました。
ただし、django シェルで呼び出そうとすると、NotRegistered 例外が発生しました。詳細情報は以下のとおりです。

更新:
私のタスク定義:

0 投票する
3 に答える
1835 参照

python - South が存在する djcelery テーブルの作成

django-celery のドキュメントによると、南にいる場合は電話する必要があります

ただし、移行ファイルを作成するだけです。

次のテーブルを作成する必要がありますが、作成しません。INSTALLED_APPS から南を削除した後、syncdb を実行しました。

ただし、南が存在する場合、これらのテーブルは作成されません

奇妙なことに、どういうわけか昨日、syncdb を使用してこれらのテーブルを取得できましたが、正直なところ、それを機能させるために何をしたかがわからず、再現できませんでした。これは、Windows 7 と Ubuntu 11.10 の両方で発生します。

私はそれを間違っているのだろうかと思っています。どんな入力でも大歓迎です!

0 投票する
1 に答える
1242 参照

python - Celeryを使用してノード間でタスクを均等に分散するにはどうすればよいですか?

私はCeleryとDjangoを使用してタスクキューを管理し、1つ(または複数)の小さな(シングルコア)EC2インスタンスを使用してタスクを処理しています。

いくつかの考慮事項があります。

  • 私のタスクは、シングルコアで100%のCPUを消費します。-使用可能なCPUを使用しますが、1つのコアのみを使用します
  • 同じコアで2つのタスクが進行中の場合、各タスクの速度は半分になります。
  • 私は各タスクをできるだけ早く開始したいと思います。

ここで、4つのEC2インスタンスがあるとすると、「-c5」でセロリを開始します。つまり、インスタンスごとに5つの同時タスク。

このセットアップでは、4つの新しいタスクがあり、idが確実にしたい場合、4つが同じインスタンスに移動し、各タスクがCPUを争うのではなく、それぞれが異なるインスタンスに移動します。

同様に、8つのタスクがある場合、2つのインスタンスがそれぞれ4つのタスクを処理するのではなく、各インスタンスのように一度に2つのタスクを取得します。

セロリはすでに私が説明したように動作しますか?そうでない場合、どうすればそのように動作させることができますか?

0 投票する
1 に答える
731 参照

django - 日と月のdjango-celery crontabスケジュール

django-celery の crontab クラスは、分、時間、および曜日のみをサポートします。月や日など、通常の cron スケジュール オプションの残りをサポートする方法はありますか? それとも、独自の crontab クラスを作成して is_due() メソッドを上書きする必要がありますか?

0 投票する
9 に答える
41717 参照

python - Celery が利用可能/実行中かどうかを検出する

Celeryを使用して非同期タスクを管理しています。ただし、場合によっては、セロリ プロセスがダウンして、タスクがまったく実行されないことがあります。セロリのステータスをチェックして、すべてが正常に機能していることを確認し、問題が検出された場合はユーザーにエラー メッセージを表示できるようにしたいと考えています。Celery Workerのドキュメントから、これにはpingまたはinspectを使用できるように見えますが、pingはハッキリしていて、inspectの使用方法が正確にはわかりません(inspect()。registered()が空の場合)。

これに関するガイダンスをいただければ幸いです。基本的に私が探しているのは、次のような方法です。

EDIT:セロリ2.3.3でregistered()が利用できるようには見えません(2.1のドキュメントにはリストされていますが)。おそらくpingが正しい答えです。

編集:Pingも、私が思っていたことをしていないように見えるので、ここでの答えはまだわかりません.

0 投票する
2 に答える
740 参照

django - Django-celery + redis がタスクを表示しない

私はこの設定でdjango-celeryとredisを使用しています:

django-admin では、タスクが表示されません。構成のどのようなエラーですか?

0 投票する
2 に答える
4866 参照

django - Heroku Django Celery: NameError: name 'DATABASES' が定義されていません

このチュートリアルに従って、セロリとジャンゴをherokuで実行しています。

ただし、ワーカーに指定されたコードを入力すると、ログに次のエラーが表示されます。

私のsettings.pyは次のようになります

この行を追加する前に同期するとCELERY_RESULT_DBURI = DATABASES['default']、正常に実行されました。資料によると

Django アプリケーションをデプロイすると、コンパイル プロセスによって次のコードが settings.py に追加され、DATABASE_URL 環境変数が使用されます。

0 投票する
1 に答える
1216 参照

python - Djangoモデルインスタンスごとに定期的なCeleryタスクをスケジュールする方法は?

データベースに多数のフィード オブジェクトがあり、各フィードを 1 時間ごとに更新しようとしています。ここでの問題は、重複した更新がないことを確認する必要があることです。1 時間に 1 回しか発生しないようにする必要がありますが、フィードが更新のために 2 時間待機することも望ましくありません。(1 時間 +/- 数分ごとに発生する場合は問題ありませんが、数分に 2 回発生するのは問題です。)

私は Django と Celery を Amazon SQS と共にブローカーとして使用しています。Celery タスクとしてフィード更新コードをセットアップしましたが、複数のノードで実行されている Celery との互換性を維持しながら、重複を防ぐ方法を見つけることができません。

私の現在の解決策は、Feed モデルに属性を追加し、last_update_scheduled5 分ごとに次のタスクを実行することです (疑似コード)。

これは、多くの同期の問題の影響を受けやすくなっています。たとえば、タスク キューがバックアップされると、このタスクが同時に 2 回実行され、更新が重複する可能性があります。これに対するいくつかの解決策を見てきました ( Celery のレシピStack Overflow の適応など) が、memcached の解決策は信頼できません。言うまでもなく、単純なロックのためだけに memcached を本番構成に追加する必要はありません。

完璧な世界では、次のように言えるようになりたいです。

しかし、これまでのところ、そのデコレータを実装する方法について私の想像力は失敗しています。

0 投票する
2 に答える
6152 参照

python - Celery + Django:Windows7でcelerybeatを開始できません

ここで奇妙な問題。私はDjangoアプリケーションを開発してきましたが、現在Celeryを実装しようとしています。通常のタスクと定期的なタスクの両方をキューに入れる必要があります。celerydを正常に起動し、それを使用してタスクを実行できます(コマンドを使用して起動しますpython manage.py celeryd start --settings=settings --loglevel=INFO)。

Windowsでは、ビートモードを有効にする-beat/することはできません。-b別のサービスとしてcelerybeatを開始する必要があります(これはCeleryドキュメントのFAQセクションに記載されています)。これをコマンドラインに入力すると、次python manage.py celerybeat -s djcelery.schedulers.DatabaseScheduler --settings=settings --loglevel=INFOのようなエラーが発生します。

celerybeatが実際に起動することはありません。だから私は定期的なタスクを実行することはできません...何かアイデアはありますか?誰かが同様のエラーを強調した他のページを1つだけ見つけましたが、解決策は提供されませんでした。

さらに詳しい情報が必要な場合は、お知らせください。この件に関する情報が見つからないので困惑していて、今日は一日中この問題を解決しようとしています...ありがとうございます。

0 投票する
3 に答える
13482 参照

python - セロリなしのDjangoでのバックグラウンド処理

2人のユーザー間のモデレートされたチャットセッションの状態を維持するDjangoサイトのごく一部があります。基本的に、最初のユーザーが3分間話し、次に2番目のユーザーが話し、次に30秒間一時停止し、このプロセスをもう一度繰り返します。私は現在、データベースと「RoomState」モデルを使用して、部屋の現在の状態(話すことができる人など)を管理しています。状態遷移は、クライアントが10秒ごとに私のビューの1つに「ping」AJAX POSTメッセージを送信することによって影響を受けます。これにより、状態を変更する時期かどうかがチェックされます。

これは機能しますが、間違いなくハッキーな感じがします。タイマーで短期間のバックグラウンドタスクを管理するために、django-celery+rabbitmqよりも軽量なものがあるかどうか疑問に思いました。Web / Djangoの性質はステートレスであることに気づきましたが、状態遷移をより信頼性の高い方法で管理するための簡単な提案があるかどうかを確認したかっただけです。