4

私のアプリケーションは、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 }}変数はページに何も表示しません。

読み取り可能な最後のデータをアプリケーションで表示できるようにしたいと考えています。新しいデータが来ない場合は、最新のものを表示します。新しいデータが来た場合にのみ、データが変更されます。これにより、アプリケーションがより安定します。

何か提案はありますか?どうもありがとうございました。

4

1 に答える 1

1

より簡単な方法の 1 つは、Django のキャッシュ フレームワークを使用して、データをローカル メモリ、memcached、またはデータベースなどに保存することです。受信したデータをキャッシュし、受信しない場合はキャッシュされたデータを使用できます。データ、またはそれが間違っているか何か:

from django.core.cache import cache

# set cached data
cache.set('data', data)
# get cached data
cache.get('data')

たとえば、モデルにデータを保存することもできます。おそらくRFID読み取り部分をビューの外に移動し、セロリ(または他の何か)を使用してタスクとして実行し、結果を保存し、ビューで保存された最新のデータを使用する必要があります

于 2011-05-31T06:24:41.787 に答える