我已连接到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]