タグ付けされた質問 「celery」

2
PostgreSQLなどのデータベースではなく、RabbitMQなどのメッセージブローカーが必要なのはなぜですか?
私のようなメッセージブローカーに新しいですRabbitMQの私たちのようなスケジューリングシステムのためのタスク/メッセージ・キューを作成するために使用することができますセロリ。 さて、ここに質問があります: 新しいタスクを追加し、Celeryなどのコンシューマープログラムで使用できるPostgreSQLでテーブルを作成できます。 なぜ、RabbitMQのように、まったく新しいテクノロジーをセットアップしたいのですか? PostgreSQLのような私たちのデータベースは分散環境で動作することができるので、今、私はスケーリングが答えではないと信じています。 データベースが特定の問題に対してどのような問題を引き起こすかを探してみたところ、次のことがわかりました。 ポーリングはデータベースをビジー状態に保ち、パフォーマンスを低下させます テーブルのロック->再び低パフォーマンス 数百万行のタスク->再度、ポーリングのパフォーマンスは低い では、RabbitMQなどのメッセージブローカーは、これらの問題をどのように解決するのでしょうか。 また、私AMQPはプロトコルがそれに続くものであることを発見しました。その中で何が素晴らしいのですか? Redisはメッセージブローカーとしても使用できますか?RabbitMQよりMemcachedに似ています。 これに光を当ててください!




2
CeleryとRQを使用する場合の長所と短所[終了]
休業。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 この質問を改善する 現在私はいくつかのバックグラウンドジョブの実装を必要とするPythonプロジェクトに取り組んでいます(主に電子メールの送信と大量のデータベース更新のため)。タスクブローカーにはRedisを使用しています。したがって、この時点では、CeleryとRQの 2つの候補があります。これらのジョブキューについてはある程度の経験がありましたが、このツールを使用した経験を共有してください。そう。 CeleryとRQを使用する場合の長所と短所。 CeleryとRQの使用に適したプロジェクト/タスクの例。 セロリはかなり複雑に見えますが、フル機能のソリューションです。実際、私はこれらすべての機能が必要だとは思いません。反対側から見ると、RQは非常に単純です(たとえば、構成、統合)が、いくつかの便利な機能(たとえば、タスクの取り消し、コードの自動再読み込み)が不足しているようです

30
セロリが未登録のタイプのタスクを受信しました(例を実行)
セロリのドキュメントから例を実行しようとしています。 走る: celeryd --loglevel=INFO /usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python. "is available to Python." % (configname, ))) [2012-03-19 04:26:34,899: WARNING/MainProcess] -------------- celery@ubuntu v2.5.1 ---- **** ----- --- * *** * -- [Configuration] -- * - **** --- . broker: amqp://guest@localhost:5672// …
96 python  celery 

1
分散タスクキュー(例:Celery)とcrontabスクリプト
「分散タスクキュー」の目的を理解できません。たとえば、pythonのセロリライブラリ。 Pythonフレームワークであるセロリでは、関数を実行するための時間指定ウィンドウを設定できることを知っています。ただし、これはpythonスクリプトを対象とするLinux crontabでも簡単に実行できます。 そして、私の知る限り、そして私自身のdjango-celery Webアプリケーションから示したように、セロリは、生のcrontabをセットアップするよりもはるかに多くのRAMメモリを消費します。比較的小さなアプリの場合、数百MBの違いがあります。 誰かがこの区別を手伝ってくれませんか?おそらく、タスクキュー/ crontabが一般的にどのように機能するかについての高レベルの説明もいいでしょう。 ありがとうございました。
92 python  django  celery 

13
セロリでタスクのステータスを確認する方法は?
タスクがセロリで実行されているかどうかを確認するにはどうすればよいですか(具体的には、セロリ-ジャンゴを使用しています)。 ドキュメントを読み、グーグルで検索しましたが、次のような通話が表示されません。 my_example_task.state() == RUNNING 私のユースケースは、トランスコーディング用の外部(Java)サービスがあることです。トランスコードするドキュメントを送信するときに、そのサービスを実行するタスクが実行されているかどうかを確認し、実行されていない場合は、それを(再)開始したいと思います。 私は現在の安定版-2.4を使用していると思います。

5
すでに実行中のタスクをセロリでキャンセルしますか?
私はドキュメントを読んで検索してきましたが、正解を見つけることができないようです: すでに実行中のタスクをキャンセルできますか?(タスクが開始したように、しばらくかかり、途中でキャンセルする必要があります) Celery FAQのドキュメントからこれを見つけました >>> result = add.apply_async(args=[2, 2], countdown=120) >>> result.revoke() しかし、これがキューに入れられたタスクをキャンセルするのか、それともワーカーで実行中のプロセスを強制終了するのかは不明です。あなたが当てることができる光をありがとう!

6
django-celeryを使用したユニットテスト?
django-celeryプロジェクトのテスト方法を考え出そうとしています。ドキュメントのメモを読みましたが、実際に何をすべきかについてはよくわかりませんでした。実際のデーモンでタスクをテストすることについては心配していません。コードの機能だけを心配しています。主に私は疑問に思っています: task.delay()テスト中にバイパスするにはどうすればよいCELERY_ALWAYS_EAGER = Trueですか(設定を試みましたが、違いはありませんでした)? 実際にsettings.pyを変更せずに、推奨されるテスト設定をどのように使用しますか(それが最善の方法である場合)? 引き続き使用できますmanage.py testか、それともカスタムランナーを使用する必要がありますか? 全体として、セロリでテストするためのヒントやヒントは非常に役立ちます。

1
Djangoは(おそらく)将来的にタスクを実行します
モデルがあるとしましょうEvent。イベントの経過後、招待されたすべてのユーザーに通知(電子メール、プッシュなど)を送信したい。以下の線に沿った何か: class Event(models.Model): start = models.DateTimeField(...) end = models.DateTimeField(...) invited = models.ManyToManyField(model=User) def onEventElapsed(self): for user in self.invited: my_notification_backend.sendMessage(target=user, message="Event has elapsed") さて、もちろん、重要な部分はonEventElapsedいつでも呼び出すことtimezone.now() >= event.endです。end現在の日付から数か月先になる可能性があることに注意してください。 私はこれを行う2つの基本的な方法について考えました。 cron過去5分以内にイベントが経過したかどうかを確認してメソッドを実行する定期的なジョブ(たとえば、5分ごとなど)を使用します。 使用し、将来的に実行するパラメーターを使用celeryしてスケジュールonEventElapsedしetaます(モデルsaveメソッド内)。 オプション1を検討すると、考えられる解決策は次のようになりますdjango-celery-beat。ただし、通知を送信するために一定の間隔でタスクを実行するのは少し奇妙に思えます。さらに、(おそらく)それほど洗練されていない解決策となる(潜在的な)問題を思いつきました。 5分ごとに、直前の5分間に経過したイベントを確認しますか?不安定なようですが、いくつかのイベントが見落とされている可能性があります(または他のイベントで通知が2回送信されますか?)潜在的な回避策:True通知が送信されたときに設定されるブール型フィールドをモデルに追加します。 次に、オプション2にも問題があります。 イベント開始/終了日時が移動した場合は手動で対処してください。を使用する場合celery、taskID(easy、ofc)を保存し、日付が変更されたらタスクを取り消して、新しいタスクを発行する必要があります。しかし、私は、セロリに将来実行されるタスクを処理するときに(デザイン固有の)問題があることを読みました:githubのOpen Issue。これがどのように起こり、なぜそれが解決するのが簡単ではないのかがわかります。 今、私は潜在的に私の問題を解決できるいくつかのライブラリに出会いました: celery_longterm_scheduler(しかし、これは、Schederyクラスが異なるため、以前のようにセロリを使用できないことを意味しますか?これは、django-celery-beat... の可能な使用法にもつながります... 2つのフレームワークのいずれかを使用すると、ジョブをキューに入れることができます(実行時間は少し長くなりますが、数か月先ではありませんか?) django-apscheduler、を使用しapschedulerます。しかし、遠い将来に実行されるタスクを処理する方法についての情報は見つかりませんでした。 私がこれに取り組む方法に根本的な欠陥はありますか?あなたが持っているかもしれないどんな入力についても嬉しいです。 通知:これは何らかの意見に基づく可能性が高いことを知っていますが、醜いまたはエレガントなものと見なされるものに関係なく、見逃した非常に基本的なことがあるかもしれません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.