需要简单的发布者订阅者

时间:2016-01-07 06:25:07

标签: python django

我们继承了一个在Py 2.6.8和Django 1.3.5上运行的工具。我们的工具通过API接受更改请求(CR)并将其保留在某些表中。

我们需要执行一些验证并将数据转换为另一组表格。我们希望这种情况最好是异步发生。因此,当CR出现时,在models.Model类的save方法中,我们启动一个线程。该线程将更改细节推送到队列(也是表)。

每秒运行的一个cron作业轮询该表并执行必要的验证&数据转换。

这是我们当前(v0.1)的实现,我们做得相当简单。这基本上是一个发布者 - 订阅者场景,它在后台发生异步。

我想从cron作业的常量轮询转移到发布者 - 订阅者方法。什么会帮助我(记住我们的旧堆栈)?

1 个答案:

答案 0 :(得分:3)

你可以考虑芹菜和兔子,它更适合像你这样的东西。

这个想法是:在你的应用程序中创建一个名为tasks.py的文件,然后将数据验证和转换逻辑放入一个函数中,可以称为validate_and_transfer()

# tasks.py
from celery import task

@task
def validate_and_transfer(data):
    # validated_data = validate(data)
    # res = transform(data)
    # if 'OK' in res.status:
    #     lalalalala

在您的模型的保存方法中,您只需调用该函数,它就会异步完成您的工作。

Here是Celery的文档,您还可以找到如何使用django等设置它。

希望,这有助于

相关问题