AMcoder - javascript, python, java, html, php, sql

Django Celery - Բազմաթիվ աշխատողների պատճառով կրկնօրինակ օգտվողների ստեղծում

Արտադրության մեջ նեխուրի հետ կապված տարօրինակ խնդրի եմ բախվում: Ներկայումս արտադրության սերվերն ունի նեխուրի 4 աշխատող, որոնք կատարում են իմ django հավելվածի կողմից գրանցված բոլոր առաջադրանքները: Մաքսային հերթեր սահմանված չեն: Աշխատողները հիմնականում 4 առանձին վերահսկիչի կոնֆ ֆայլեր են:

Այժմ իմ հավելվածում ես մշակում եմ facebook webhook-ի տվյալները և ցանկանում եմ, որ հատուկ FacebookID-ով օգտվողը ստեղծվի միայն մեկ անգամ իմ հետին պլանում: Բայց, վերջերս ես ստուգեցի և պարզեցի, որ կան օգտատերեր, ովքեր ունեն նույն FacebookID-ը, ինչը չպետք է տեղի ունենար։

Այն, ինչ տեղի ունեցավ, կարծում եմ, օրինակ. FacebookID 666-ով օգտվողն ինձ ուղարկել է վեբ-կապիկի տվյալներ: Այժմ ստեղծվել է առաջադրանք, որը կստեղծի նոր օգտվողի օրինակ իմ տվյալների բազայում FacebookID 666-ով: Այժմ, նախքան օգտատերը ստեղծվել է իմ տվյալների բազայում, օգտվողը հարվածում է ինձ մեկ այլ տվյալով, որը նույնպես ստեղծել է առաջադրանք, բայց այլ աշխատողի ներքո, և այդպիսով ես ինքս ստացա երկու օգտատեր՝ նույն FacebookID-ով:

Կա՞ որևէ կերպ, որով ես կարող եմ կարգավորել celery-ը, որպեսզի կարգավորի հատուկ FacebookID-ով օգտվողին, որպեսզի առաջադրանքներ ստեղծի միայն ՄԵԿ աշխատողում: Թե՞ ես ամբողջովին սխալ եմ գնահատել իրավիճակը այստեղ:

01.01.2019

  • Անջատեք գրանցման կոճակը սեղմման վրա, որպեսզի օգտվողը չկարողանա սեղմել այն երկու անգամ, ինչպես նաև այլ ընդհանուր մեթոդներ՝ կրկնօրինակ ձևի ներկայացումից խուսափելու համար (եզակի ID-ներ թաքնված մուտքերում և այլն) - stackoverflow.com/questions/16814157/ 01.01.2019
  • Ի՞նչ եք օգտագործում ձեր բրոքերի համար: 02.01.2019
  • @WiggyA. սա facebook-ի վեբ-կապ է, ամեն անգամ, երբ օգտատերը հաղորդագրություններ է ուղարկում էջում, այս տվյալները հարվածում են իմ սերվերին 02.01.2019
  • @2ps rabbitmq բրոքեր 02.01.2019
  • ի՞նչ կասեք ձեր տվյալների բազայում your_facebook_id_keeper_field-ից unique=True սահմանելու մասին: 02.01.2019
  • @Chiefir այդ դեպքում առաջին webhook-ի համար facebook-ի տվյալները կմշակվեն, բայց երկրորդը սխալ կթողնի 02.01.2019
  • Պարզապես ավելացրեք try-except հայտարարությունը 02.01.2019

Պատասխանները:


1

Ըստ էության, ձեզ անհրաժեշտ է օգտատիրոջ մակարդակի բաշխված կողպեք՝ մի քանի աշխատողների վրա միևնույն օգտագործողի վրա աշխատելուց կանխելու համար: Դա անելու մի քանի եղանակ կա, որոնցից ամենապարզը տվյալների բազան է, ինչպիսիք են mysql կամ redis: Mysql-ում առաջին պրոցեսը գործարքային եղանակով (1) ստուգում է տվյալների բազայի աղյուսակում գոյություն ունեցող տողը՝ օգտագործողի ID-ով (օրինակ՝ էլ. փոստ կամ այլ եզակի նույնացուցիչ) և (2) եթե տող չկա՝ ստեղծելով այդ տողը. (3) և եթե տող կա, վերադարձեք վաղ՝ առանց որևէ բան անելու: Դուք կարող եք դա անել նաև redis-ում՝ օգտագործելով կարմիր կողպումը կամ ավելի փոքր համակարգերի համար՝ պարզապես օգտագործելով SETNX

03.01.2019
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..