への同時アクセスを避けてください(私たちは、それがローカルにクリックしようとしました同時にリンク)同じキュー要素
フラックスはこれに類似している:。
views.py
[GET]
def list_operator(request, id):
if request.POST:
utilitary = Utilitary(id)
pool = ThreadPool(processes=1)
async_result = pool.apply_async(utilitary.recover_people, (id,))
return_val = async_result.get()
person = People.objects.get(pk=return_val)
return redirect('people:people_update', person.pk)
utilitary.py
このファイルのメソッドはrecover_people
で、複数のテーブルにわたって約4-5のクエリ(人はflag_allocated=False
)を実行し、リストをソートして最初の要素を返します。 最後のステップは、このいずれかになります。
for person in people:
p_address = People_Address.objects.get(person_id=person.id)
p_schedule = Schedules.objects.get(schedules_state=p_address.p_state)
if datetime.now() > parse_time(p_schedule.schedules_hour):
person = People.objects.get(pk=person.id)
person.flag_allocated = True
person.date_of_allocation = datetime.now()
person.save()
return person.pk
おそらくUtilitaryメソッドのロジックで何かが間違っていますか?あるいは、私はこの量の人々が同時にこの方法を呼び出すことでこの問題を予期しているはずですか?
は、キャッシュのヘルプを使用してもらえますか?申し訳ありません、私はdjangoとmvcを初めて使っています。
間違いなく私には競合状態のようです。彼らはすべて同じクエリを実行し、同じ結果を得、同じ仕事をする可能性が非常に高い。あなたは仕事の各作業単位に労働者を「登録する」方法を考えてみるかもしれません。 –
@DanFarrell申し訳ありませんが、例やリンクを提供できますか?これは私にとってとても新しいものです。 – Onilol
これは実際どのように「キュー」ですか? –