3

関数の出力をキャッシュするためにビーカー キャッシュを使用しています。

フラスコのuwsgiアプリからキャッシュを無効にすると、セロリアプリに反映されず、その逆も同様でした。

さらに調査したところinspect.getsourcefile(func)、redis に格納するための一意のキーにビーカーが使用されていることがわかりました。

問題は次のとおりです。フラスコのuwsgiアプリでは、関数をロードするパスが次のように表示されます

./myproject/db_api.py

セロリでは次のように表示されます。

/opt/myproject/db_api.py.

inspect.getsourcefile(func)関数が両方のケースで同じパスを返すことを確認するにはどうすればよいですか?

セロリにパスを ./myporject/db_api.py として設定させるか、フラスコにパスを /opt/myproject/db_api.py としてロードさせることは問題ありません。

Celeryは、/etc/default/celeryd でデーモンとして実行されています。CELERYD_CHDIR='/opt'celeryconfig.pyが持っているCELERY_IMPORTS = ('myproject.controllers.celerytasks.cache_invalidate')

Flask は、ubuntu 上の .ini ファイルを使用して uwsig によって実行されており、次の構成が使用されています。

[uwsgi]
module = myproject
callable = app
chdir = /opt
4

0 に答える 0