所有,我对 django 信号有疑问。
我有一个模型 为了加快页面加载的响应速度,我正在卸载一些必须完成的密集处理,通过调用我们正在运行的第二个本地主机网络服务器,两者都使用相同的数据库。我看到调用进程可以检索对象的行为,但被调用进程不能。端口 80 和端口 [port] 都指向在同一个数据库上运行的 django 进程。
在模型.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 是在保存对象并写入数据库后调用的。这是不正确的吗?