カスタム 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が実行されていることを知っています。したがって、信号を発生させる必要があるコードのブロックも実行されていることを知っています。簡単にするため) 詳細については、お気軽にお問い合わせください。できるだけ早く対応いたします。