すべて、django シグナルに問題があります。
私はモデルを持っています ページ読み込みの応答性を向上させるために、同じデータベースを使用して実行している 2 つ目の localhost Web サーバーへの呼び出しを介して、実行する必要があるいくつかの集中的な処理をオフロードしています。呼び出しプロセスはオブジェクトを取得できるが、呼び出されたプロセスは取得できないという動作が見られます。ポート 80 とポート [ポート] の両方が、同じデータベースで実行されている django プロセスを指しています。
models.py で
class A(models.Model):
stuff...
def trigger_on_post_save( sender, instance, create, raw, **keywords):
#This line works
A.objects.get( pk=instance.pk )
#then we call this
urlopen( r'http://127.0.0.1:[port]' +
reverse(some_view_url, args(instance_pk) ).read()
post_save.connect( trigger_on_post_save, A )
views.py で
def some_view_function( request, a_pk ):
#This line raises an object_not_found exception
A.objects.get( pk=a_pk )
さらに、urlopen 呼び出しで例外が発生した後、オブジェクトはデータベースに存在しません。オブジェクトが保存され、データベースに書き込まれた後に post_save が呼び出されたことは私の理解でした。これは間違っていますか?