私のプロジェクトではPython 3.5とDjango 1.8.5を使用していましたが、最近同様の問題が発生しました。 SIGNALで直接xxx.py
コードを実行することは簡単ですが、「シグナルはメインスレッドでしか動作しません」というエラーのため、Djangoでパッケージとして実行することはできません。
まず、--noreload --nothreading
でrunserverを使用することはできますが、私のために遅すぎるマルチスレッドコードを実行します。
第2に、私のパッケージの__init__.py
のコードがメインスレッドで実行されていました。しかし、もちろん、メインスレッドだけがシグナルを捕まえることができますが、私のコードはそれをまったくキャッチできません。それは私の問題を解決することはできませんが、それはあなたのための解決策かもしれません。
最後に、Pythonにsubprocess
という名前の組み込みモジュールがあることがわかりました。つまり、このプロセスには独自のメインスレッドがあるので、コードをSIGNALで簡単に実行することができます。私はそれを使用してパフォーマンスを知っていませんが、それは私のためにうまく動作します。 PSでは、subprocess
に関するすべての詳細をPython Documentationで見つけることができます。
ありがとう〜
私は同じ問題があります。奇妙な部分は、私はかなりスレッドを使用していないと確信しているということです。私はmanage.py runserverを実行しています。 –