Դիտումների հաշվիչը, որը մեր կատալոգը վերածեց 502-ի

Առաքում

Այն էջը, որտեղ ներկայացված են մեր վաճառած բոլոր հավաքածուները, թողարկումից հետո մոտ 41 ժամ յուրաքանչյուր այցելուի պատասխանել է 502 Bad Gateway-ով։ Յուրաքանչյուր հավաքածուի սեփական էջն աշխատում էր, գլխավոր էջն աշխատում էր, գնում կատարելը՝ աշխատում։ Խնդիրը դիտումների քանակը հաշվող մի քանի տողերում էր։

Սխալը

Մեր խանութի սերվերը հաշվում է հավաքածուների էջերի այցելությունները։ Որոշելու համար, թե որ հավաքածուի համար է հարցումը, այն վերցնում է ուղու երկրորդ մասը՝

self._count_view(path.strip("/").split("/")[1] if path.count("/") >= 2 else "")

/kits/studio/-ի դեպքում դա studio-ն է։ Կատալոգի համար՝ /kits/, ուղին ունի երկու թեք գիծ, ուստի պահպանիչն այն բաց է թողնում, բայց թեք գծերը հեռացնելուց հետո մնում է միայն մեկ մաս, և [1]-ը նետում է IndexError։ Մշակիչը Python-ի ստանդարտ http.server-ն է. do_GET-ում բացառությունը փակում է կապը առանց պատասխանի, և Cloudflare-ը այցելուին ցույց է տալիս 502։

Ուղղումը մեկ փոքրիկ ֆունկցիա է, որը վերադարձնում է դատարկ տող, երբ մասը բացակայում է։ Դիտումների հաշվիչին անհրաժեշտ էր միայն հավաքածուի անունը. այն երբեք չպետք է կարողանար խափանել այն էջը, որի դիտումները հաշվում էր։

Ինչու մեր ստուգումներից ոչ մեկը չնկատեց դա

Ինչ փոխվեց

Հիմնական եզրակացությունը

Պահանջների մշակիչում կատարվող կողմնակի աշխատանքները, ինչպիսիք են հաշվարկը, մուտքագրումը կամ հետևումը, երբեք չպետք է կարողանան ձախողել պահանջը, իսկ էջերի ստուգումը, որը ծածկում է միայն ձեր նոր փոփոխած էջերը, բաց է թողնում դրանց հղում ունեցող էջերը։ Night Watch-ի վոչդոգը վերցնում է էջերի ցանկացած ցուցակ, որոնցից յուրաքանչյուրը պետք է պարունակում է տեքստ, ոչ միայն գլխավոր էջերը։

Թարմացված է: