1

Mac OS X (10.8.4) で Django プロジェクトを作成し、空港をモデル化するアプリケーションを使用しています。データベース SQLite にはいくつかのテーブルがあり、そのうちの 1 つはフライトの遅延 (flight、date、new_hour、cause) 用です。

私の目的は、Celery を使用して、ユーザーにフライトの遅延を通知したり、無効になった遅延を削除したりするなどの特定のタスクを実行することです。このため、Celery ワーカーをデーモンとして実行することを考えましたが、これを行う方法に関するドキュメントを読もうとすると、大きな問題が発生しました。

そのため、Celery を使用するように Django プロジェクトを構成し、タスクを定義して呼び出し、ワーカー プロセスを開始してタスクを呼び出す方法の指示に従いました。私のプロジェクトには、celerytest という追加のアプリケーションと、次のような tasks.py ファイルがあります。

from celery import task
from flughafen.models import Country, Airline, Aircraft, Airport, Flight, Reservation, CheckIn, Delay

@task()
def delete_delays():
    # code to retrieve delays which are no longer valid and to delete them

ここにある指示に基づいて、このタスクを呼び出すことができます。しかし、ワーカーをデーモンとして実行するための説明を読んでも、何をすべきかが明確ではありません。

ドキュメントには、launchctl でロードするはずの plist ファイルがある github ページにリダイレクトする Mac OS X のリンクが記載されています。それらをダウンロードしてロードしましたが、終了ステータスが表示されます。

octavio:daemon ohd$ launchctl load org.celeryq.celerybeat.plist
octavio:daemon ohd$ launchctl load org.celeryq.celeryd.plist
octavio:daemon ohd$ launchctl load org.celeryq.celerymon.plist
octavio:daemon ohd$ launchctl list | grep celery
-   2   org.celeryq.celerymon
-   2   org.celeryq.celeryd
-   2   org.celeryq.celerybeat

thisまたはthisのような構成が欠落していると思いますが、どこに配置すればよいかわかりません。

誰かアドバイスをください。

ありがとう。

4

1 に答える 1

2

私はその問題に苦労していました。私は launchd ルートには行きませんでしたが、最終的にはデーモン化ユーティリティを使用してデーモン化されたワーカーを取得しました。

http://software.clapper.org/daemonize/

brewで簡単にインストールできます。

次に、Fabric を使用して、次のようにワーカーを再起動できます。

def celeryd():
    with cd('/usr/local/Cellar/daemonize/1.7.4/sbin'):
        # Kill existing workers
        sudo('ps auxww | grep celeryd | grep -v "grep" | awk \'{print $2}\' | xargs kill')
        # Create new workers
        sudo('daemonize -u pipeadmin %s/manage.py celery worker' % siteDir)
于 2013-09-19T23:01:19.337 に答える