3

我正在开发一个 django IPN 插件,它将 IPN 数据保存到模型中,然后调用 post_save 信号。

我担心在这个用例(gunicorn、gevent 等)下,信号可能会被异步调用/完成。IPN 经常向 ipn url 发送超过 1 个请求,我需要能够按顺序处理这些请求。

我应该为此使用队列吗?简单的python队列会更好地工作,还是我应该使用kombu + celery(有1个工人)之类的东西?

4

1 回答 1

8

不确定同步性是您真正关心的问题。Django 的信号总是在进程内执行:也就是说,它们将由完成该请求的其余部分的进程执行,然后返回响应。但是,如果您的服务器本身是异步的,则有可能一个请求将在稍后收到的第二个请求之后完成处理,因此信号将以错误的顺序处理。

当然,Celery 绝对是异步的,但如果可靠的订购是您的优先事项,那可能是一个更好的选择。

于 2013-11-01T17:26:50.970 回答