b.pyからa.pyのcreate_idを呼び出し、UNIX秒と1秒の中での順番を引っ付けるような自動採番を実現したいです。そのときに呼び出すごとに変数は初期化されてしまうので変数aの値が前回は何番だったかわかるようにaの値を外部に保存したいとおもいます。
通常なら、txtファイルとかに番号を保存することで実現できるのですが、R/Wの時間がかかりすぎるのでできることならば、メモリに保存をしたいです。すでにSQLiteやRedisを使えばメモリに保存できることまでは分かっているのですが、わざわざこの変数1つをほぞんするためにDBを用意するのも大掛かりな気がします。
もう少し簡単にできる方法があれば教えてください。
Python
1 2# a.py 3import time 4def create_id(): 5 # aの値を持ってくるコード、秒が変わったらaの値を0に戻すコード 6 id = str(int(time.time())) + str(a) 7 a += 1 8 # aの値をどこかにセーブするコード 9 return id
Python
1# b.py 2import a 3print(a.create_id) 4# 表示
「R/Wの時間がかかりすぎる」ということは、 a.pyはどれくらいの頻度で呼び出されることを想定しているのでしょうか?
webアプリの投稿のようなものに対してidを付けることを想定しているので、今は勉強中なので分かりませんが、最大は結構な数だと思います。この部分をボトルネックにしないようにできるだけ早くしようと考えています。
メモリに保存するという事は永続化は求めないという事ですね?
redis使おうが何使おうがメモリのデータは端末の電源がついている間のみで、電源が消えればデータも消える、そこは問題無いんですね?
落ちた場合に1秒以内に復旧するとは考えにくいですし、問題ありません。
この方法は使えませんでしょうか?
https://www.glamenv-septzen.net/view/210
(質問への直接の回答ではありませんが)
回答2件
あなたの回答
tips
プレビュー