URL を含むメッセージを受け入れるシステムがあります。特定のキーワードがメッセージに含まれている場合、URL をパラメーターとして使用して API 呼び出しが行われます。
処理を節約し、最終的なプレゼンテーションを効率的に保つために。
特定の時間範囲内に重複した URL が送信されるのは望ましくありません。
したがって、この URL ---> http://instagram.com/p/gHVMxltq_8/が入ってきて、API に送信された場合
url = incoming.msg['urls']
url = urlparse(url)
if url.netloc == "instagram.com":
r = requests.get("http://api.some.url/show?url=%s"% url)
それから 3 秒後に同じ URL が入ってきますが、それを API に送信したくありません。
重複したメッセージが時間に基づいて API に送信されるのを排除/制限するには、どのプログラミング方法を展開すればよいですか?
TIM PETERS メソッドを使用した更新:
limit = DecayingSet(86400)
l = limit.add(longUrl)
if l == False:
pass
else:
r = requests.get("http://api.some.url/show?url=%s"% url)
このスニペットは、tcp 経由でストリーミング メッセージを受け入れる長時間実行されるプロセス内にあります。
同じ URL を渡すたびに、l は毎回 True を返します。
しかし、インタープリターで試してみると、すべて問題なく、設定時間が経過していない場合は False が返されます。
セットが追加されている間、スクリプトが実行されているという事実と関係がありますか?
インスタンスの問題?