从模型信号post_save发送数据以查看

时间:2020-08-02 20:46:38

标签: javascript python django

我已连接到API,然后将所有数据保存到数据库中,我已经为该模型的post_save设置了信号。

如何在用户不需要重新加载页面的情况下将所有新数据显示到Feed中?

我使用apscheduler创建了一个调度程序,该调度程序每隔特定时间从API中提取一次数据。

updater.py

from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from news_updater import newsAPI

def start():
    print('sched start')
    scheduler = BackgroundScheduler()
    scheduler.add_job(newsAPI.get_fxstreet_news, 'interval', minutes=1)
    scheduler.start()

apps.py

from django.apps import AppConfig
class NewsFilterConfig(AppConfig):
    name = 'news_filter'

    def ready(self):
        from news_updater import updater
        updater.start()

然后我将其添加到了我的模型中。py

from django.db.models.signals import post_save, pre_save
def save_article(sender, instance, **kwargs):
    print('new article saved')


post_save.connect(save_article, sender=NewsArticles)

每次有新数据输入时,它已经在打印“已保存的新文章”。

我还设置了一个频道并已连接,但我不知道如何将所有内容拼凑在一起

consumers.py

import asyncio
import json
from channels.consumer import AsyncConsumer
from channels.db import database_sync_to_async

from .models import NewsArticles

class NewsArticlesConsumer(AsyncConsumer):
    async def websocket_connect(self, event):
        print('connected', event)
        await self.send({
            'type': 'websocket.accept'
        })

        latest_news_obj = await self.get_latest_news()
        print(latest_news_obj)

        await self.send({
            'type': 'websocket.send',
            'text': "hello world"
        })

    async def websocket_receive(self, event):
        print('received', event)

    async def websocket_disconnect(self, event):
        print('disconnected', event)

    @database_sync_to_async
    def get_latest_news(self):
        return NewsArticles.objects.filter(is_new=True)[0]

0 个答案:

没有答案