2017-03-03 19 views
0

Celeryのマニュアルによれば、設定ファイルは作業ディレクトリまたはPythonパスになければなりません。Celeryの設定ファイルの場所

from celery import Celery 
from properties import config_file 
import sys 


sys.path.append(config_file) 
app = Celery() 
app.config_from_object(config_file.split('.')[0]) 

ここでconfig_fileは/opt/celery/celery_config.pyです。考え方は、ユーザーに設定ファイルを作成する自由を与えることです。ドキュメンテーションによれば、設定ファイルは作業ディレクトリかsysパスのどちらかになければなりません。私はsys_pathにconfig_fileを追加しましたが、ワーカーが起動するとインポートエラーが発生します。

config_fileをCeleryインスタンスを作成するモジュールと同じディレクトリに置く必要がありますか?

+0

プロパティモジュールのコードも指定できますか? –

答えて

0

同じディレクトリにconfigを持つ必要はありません。

簡単な解決策は、セロリの作業を開始するときにディレクトリを変更することです。スーパバイザまたは他のツールを使用して作業者を開始する場合は、作業者を実行するディレクトリを指定できます。

この場合、/opt/celeryというディレクトリとcelery worker -l info --config=celery_configというセルリーコマンドを指定して、/opt/celery/celery_config.pyから構成を選ぶことができます。

また、そのディレクトリをsys.pathに追加することもできます。セロリモジュールで、ディレクトリをsys.pathに追加します。

import sys 

from celery import Celery 


sys.path.append('/opt/celery/') 


app = Celery() 
app.config_from_object('celery_config') 

これは/opt/celery/celery_config.pyから構成を選択します。

+0

私はsys.path.append(config_file)を呼び出したが、何らかの理由でそれが動作しなかった場合は表示されます。私はConfigクラスオブジェクトを使用して終了しました。私はconfig_fileを読んでこのクラスの属性を設定しました。 – amrx

+0

@amrx sys.path.append(config_file) 'の代わりに' sys.path.append(dir) 'を使うべきではありませんか? – ChillarAnand

関連する問題