我正在使用django,我想从一个函数发送信号,并在该信号的另一个函数的中间创建一个“等待点”。
更详细, 我正在使用第三方API。所以,
def foo():
id = thirdPartyFunction(action='/bar')
id.save()
# send signal!
return render_to_response('pleaseWait.html')
def bar():
# initialize this and that
# ...
# WAIT FOR SIGNAL
return HttpResponseRedirect('success.html')
如何在函数中创建一个侦听器。 目前,我的理解是信号调度程序调用另一个函数。我不知道该怎么做。
感谢您的时间和帮助:)
答案 0 :(得分:0)
如果两个函数将在同一进程中被调用,则有可能,但是Django由于某种原因并没有使其变得简单。那是因为有更好的方法来执行此操作,例如使用真正的异步工作程序。
如果您确实需要这样做(我经常使用它来测试信号),则可以利用Django运行信号的方式(尽管在将来的版本中可能会发生变化。Django信号都在一个大循环中运行)在相同的过程中,它们被触发,随后的订阅者在较早的订阅者之后被调用。因此,您可以在<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink runat="server" ID="myHyperLink"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
HyperLink myHyperLink = e.Row.FindControl("myHyperLink") as HyperLink;
myHyperLink.Text = e.Row.Cells[1].Text;
myHyperLink.NavigateURL = e.Row.Cells[1].Text;
}
}
中进行如下操作:
bar()
如果需要,您甚至可以从回调中的信号中检索数据并将其保存到状态dict,但不要告诉任何人您从我这里听到过。