2017-11-24 18 views
2

セロリで別のメッセージブローカーを使用することはできますか?セロリ:RabbitMQの代わりにPostgreSQLを使用

例:私はRabbitMQの代わりにPostgreSQLを使用したいと思います。それ私の知る限り

は結果だけのバックエンドでサポートされています。http://docs.celeryproject.org/en/latest/userguide/configuration.html#database-backend-settings

のPostgreSQL 9.5ので堅牢なメッセージ/作業キューを実装可能SKIP LOCKEDあります。 https://blog.2ndquadrant.com/what-is-select-skip-locked-for-in-postgresql-9-5/

+0

ブローカーに関するCeleryのドキュメントは読んでいますか? http://docs.celeryproject.org/en/latest/userguide/configuration.html#broker-settings –

+2

データベース転送サポートコードが削除されましたが、最近追加されました:https://github.com/celery/kombu/ tree/master/kombu/transport/sqlalchemy – georgexsh

+0

@RonanBoiteauドキュメントによれば、いくつかのサポートされているトランスポートスキーマがあります。 amqp://、redis://、sqs://、およびqpid://です。これは、PostgreSQLの使用がサポートされていないようです。 – guettli

答えて

2

はい、できますrabbitmqではなく、postgresをブローカーとして使用してください。ここにそれを示す簡単な例があります。

from celery import Celery 


broker = 'sqla+postgresql://user:[email protected]/dbname' 

app = Celery(broker=broker) 

@app.task 
def add(x, y): 
    return x + y 

キュータスク

In [1]: from demo import add 

In [2]: add.delay(1,2) 
Out[2]: <AsyncResult: 4853190f-d355-48ae-8aba-6169d38fad39> 

ワーカー結果:最新(セロリ== 4.1.0、昆布== 4.1.0でテスト

[2017-12-02 08:11:08,483: INFO/MainProcess] Received task: t.add[809060c0-dc7e-4a38-9e4e-9fdb44dd6a31] 
[2017-12-02 08:11:08,496: INFO/ForkPoolWorker-1] Task t.add[809060c0-dc7e-4a38-9e4e-9fdb44dd6a31] succeeded in 0.0015781960000822437s: 3 

、SQLAlchemyのの== 1.1.1 )バージョン。

1

セロリで別のメッセージブローカーを使用することはできますか?

バージョン4より前は、はいです。

したがって、ブローカーとしてPostgreSQLを使用したい場合、それはOKです。セロリもSQLAlchemyをサポートしています。私はこれまでセロリ3のメッセージブローカーにmongodbを使用しています。あなたがセロリ4.0でそれを使用したい場合は

はしかし、多分それは私の心の内の1つの方法はセロリない、はい、それは昆布だし、昆布のコードを変更され、少し難しいです!

関連する問題