我的应用程序必须每2秒钟从RFID阅读器连接和接收数据,因此它已在django框架上开发。以下是 views.py :
中的相关行HOST = '192.168.0.1'
PORT = 50007
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.settimeout(2)
soc.connect((HOST, PORT))
soc.send('tag.db.scan_tags(100)\r\n')
datum = soc.recv(128)
if datum.find("ok") > -1:
soc.send('tag.read_id()\r\n')
data = soc.recv(8192)
如果RFID阅读器在其现场发现任何RFID标签,则应用程序会将接收到的数据呈现为模板 {{data}} 。当字段中没有标记或无法读取标记时会出现此问题, {{data}} 变量在页面上不显示任何内容。
我希望我的应用程序能够显示可以读取的最后数据。如果没有新数据,请显示最新数据。只有在有新数据出现时才会更改数据。这将使我的应用程序更稳定。
有什么建议吗?非常感谢你。
答案 0 :(得分:1)
更容易做的事情之一是使用Django的cache framework,并将数据存储在本地内存,memcached或数据库等中。您可以缓存收到的任何数据,并使用缓存的数据如果您没有收到数据,或者它是错误的或其他什么:
from django.core.cache import cache
# set cached data
cache.set('data', data)
# get cached data
cache.get('data')
您还可以将其他方式的数据存储在模型上。您可能应该将RFID读取部分移出视图,并使用celery(或其他内容)将其作为任务运行,保存结果,并在视图中使用最新保存的数据