2

カスタム django シグナルに関連する、うまくいかない質問が他にもたくさんあることに気付きました。私を信じてください。私の個人的な状況をうまく機能させることができず、それらすべてを何度か読んだことがあります。

これが取り引きです:私はdjango-rqを使用して、特定のhttpリクエストによって開始される長いバックグラウンドプロセスを管理しています。そのバックグラウンド プロセスが完了したら、カスタム Django シグナルを起動して、django-rq でジョブの失敗/例外をチェックできるようにします。

INSTALLED_APPS リストにある 2 つのアプリケーションは、同じレベルにあります。app1 の内部には、ファイル signal.pyがあります。

import django.dispatch

file_added = django.dispatch.Signal(providing_args=["issueKey", "file"])
fm_job_done = django.dispatch.Signal(providing_args=["jobId"])

また、ファイルjobs.py

from app1 import signals
from django.conf import settings

jobId = 23
issueKey = "fake"
fileObj = "alsoFake"

try:
    pass
finally:
    signals.file_added.send(sender=settings.SIGNAL_SENDER,issueKey=issueKey,fileName=fileObj)
    signals.fm_job_done.send(sender=settings.SIGNAL_SENDER,jobId=jobId)

次に、app2 の内部の views.py

from app1.signals import file_added, fm_job_done
from django.conf import settings

#Setup signal handlers
def fm_job_done_callback(sender, **kwargs):
    print "hellooooooooooooooooooooooooooooooooooo"
    logging.info("file manager job done signal fired")

def file_added_callback(sender, **kwargs):
    print "hellooooooooooooooooooooooooooooooooooo"
    logging.info("file added signal fired")

file_added.connect(file_added_callback,sender=settings.SIGNAL_SENDER,weak=False)
fm_job_done.connect(fm_job_done_callback,sender=settings.SIGNAL_SENDER,weak=False)

フィードバックはまったく得られず、完全に途方に暮れています。私は実際にjobs.pyが実行されていることを知っています。したがって、信号を発生させる必要があるコードのブロックも実行されていることを知っています。簡単にするため) 詳細については、お気軽にお問い合わせください。できるだけ早く対応いたします。

4

2 に答える 2

-1

ジャンゴreceiverデコレータを使用する

from django.dispatch import receiver
from app1.signals import file_added, fm_job_done

@receiver(fm_job_done)
def fm_job_done_callback(sender, **kwargs):
    print "helloooooooooooooo"


@receiver(file_added)
def file_added_callback(sender, **kwargs):
    print "helloooooooooooooo"

また、私は信号を処理することを好みますmodels.py

于 2015-01-27T00:27:50.400 に答える