sql >> データベース >  >> NoSQL >> Redis

DisabledBackend:Celery、Redis、Flaskでの不安定な動作

    したがって、AsyncResultにアクセスする必要があるようです。 Celeryではなく、Celeryアプリインスタンスを介してのみ、またはCeleryアプリインスタンスを引数として渡します。

    したがって、これは機能しません:

    from celery.result import AsyncResult
    
    @app.route('/status/<task_id>')
    def get_status(task_id):
        task = AsyncResult(task_id)
        return task.state
    

    これは機能します:

    from app import my_celery # Your own Celery Application Instance
    
    @app.route('/status/<task_id>')
    def get_status(task_id):
        task = my_celery.AsyncResult(task_id)
        return task.state
    

    これも機能します:

    from app import my_celery
    from celery.result import AsyncResult
    
    @app.route('/status/<task_id>')
    def get_status(task_id):
        task = AsyncResult(task_id, app=my_celery)
        return task.state
    

    AsyncResultを呼び出すことで何が起こるかを推測しています Celeryから直接、Celeryの構成にアクセスしないため、結果を照会するように構成されたバックエンドがないと見なされます。

    しかし、それは関数の完全な失敗を説明するだけであり、不安定な動作を説明するものではありません。これは、さまざまなスレッドと、アプリインスタンスが重要である状況が原因であると推測します。そのため、Celeryはそれを見つけますが、あまり確かではありません。

    いくつかのテストを実行しましたが、インポートされたAsyncResultを変更した後、再び正常に機能しているようです。 、でも掘り続けます。




    1. flashdbはredisのすべてのキーをクリアしませんか?

    2. Redisサーバーは1024Mを超えるmaxheapを実行できません

    3. Apache HBase I / O – HFile

    4. $unsetと$setをmongoDBで組み合わせて使用​​する方法