CINXE.COM
Python Infrastructure Status - Incident History
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- force IE browsers in compatibility mode to use their most aggressive rendering engine --> <meta charset="utf-8"> <title>Python Infrastructure Status - Incident History</title> <meta name="description" content="Python Infrastructure's Incident and Scheduled Maintenance History"> <!-- Mobile viewport optimization --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> <!-- Time this page was rendered - http://purl.org/dc/terms/issued --> <meta name="issued" content="1739801662"> <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading --> <meta http-equiv="cleartype" content="on"> <!-- Le fonts --> <style> @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?host=status.python.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?host=status.python.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-e642ffe82005c6208632538a557e7f5dccb835c0303b06f17f55ccf567907241.woff?host=status.python.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-0f094da9b301d03292f97db5544142a16f9f2ddf50af91d44753d9310c194c5f.ttf?host=status.python.org') format('truetype'); font-weight:300; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?host=status.python.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?host=status.python.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-2ee4c449a9ed716f1d88207bd1094e21b69e2818b5cd36b28ad809dc1924ec54.woff?host=status.python.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-a40a469edbd27b65b845b8000d47445a17def8ba677f4eb836ad1808f7495173.ttf?host=status.python.org') format('truetype'); font-weight:400; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?host=status.python.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?host=status.python.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0c394ec7a111aa7928ea470ec0a67c44ebdaa0f93d1c3341abb69656cc26cbdd.woff?host=status.python.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-9e43859f8015a4d47d9eaf7bafe8d1e26e3298795ce1f4cdb0be0479b8a4605e.ttf?host=status.python.org') format('truetype'); font-weight:400; font-style:italic; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?host=status.python.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?host=status.python.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-86724fb2152613d735ba47c3f47a9ad2424b898bea4bece213dacee40344f966.woff?host=status.python.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-cf3e4eb7fbdf6fb83e526cc2a0141e55b01097e6e1abfd4cbdc3eda75d183f74.ttf?host=status.python.org') format('truetype'); font-weight:500; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?host=status.python.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?host=status.python.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-c8dc577ff7f76d2fc199843e38c04bb2e9fd15889421358d966a9f846c2ed1cd.woff?host=status.python.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-27177fe9242acbe089276ee587feef781446667ffe9b6fdc5b7fe21ad73e12f3.ttf?host=status.python.org') format('truetype'); font-weight:700; font-style:normal; } </style> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-57x57-precomposed-5c491f48c00b91d5cf8b0839521a13b98ba3cd2167c5e0e53040ccf401227556.png" sizes="57x57"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-72x72-precomposed-94327076268b47cc7da838952f5e89a5ed9dcdde2734db231491e328d23e9962.png" sizes="72x72"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-114x114-precomposed-1e9664e05d1a3dc5cd67ee3b3c17215526a04a3b0a2e018bd26c5fa73482392f.png" sizes="114x114"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-120x120-precomposed-5d71ac87ecfc852fef52505af1eade3674709a530e7ed2ddb3ff44ab62db52f7.png" sizes="120x120"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-144x144-precomposed-f140e6b87ce676b2388742ebce8292476ba938f73a49c4c15e86565a224bb93d.png" sizes="144x144"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-152x152-precomposed-38fe2c387837f45dfab255be5670c7b3aad29cf6dbc5b8e4cdce30f61259b9ce.png" sizes="152x152"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-167x167-precomposed-b776218c8fb96a430158776d0749c2f81143c94f40c4427e53e32e4c786c87c0.png" sizes="167x167"> <link rel="apple-touch-icon" href="https://dka575ofm4ao0.cloudfront.net/assets/base/apple-touch-icon-180x180-precomposed-8819023509ff72c1f8945709243c9bab8b40c9bac0eb7891ad75b36600c7c7f9.png" sizes="180x180"> <link rel="shortcut icon" href='https://dka575ofm4ao0.cloudfront.net/assets/logos/favicon-2b86ed00cfa6258307d4a3d0c482fd733c7973f82de213143b24fc062c540367.png'> <link rel="alternate" type="application/atom+xml" href="https://status.python.org/history.atom" title="Python Infrastructure Status History - Atom Feed"> <link rel="alternate" type="application/rss+xml" href="https://status.python.org/history.rss" title="Python Infrastructure Status History - RSS Feed"> <!-- Canonical Link to ensure that only the custom domain is indexed when present --> <link rel="canonical" href="https://status.python.org/history"> <meta name="_globalsign-domain-verification" content="y_VzfckMy4iePo5oDJNivyYIjh8LffYa4jzUndm_bZ"/> <link rel="alternate" type="application/atom+xml" title="ATOM" href="https://status.python.org/history.atom" /> <!-- Le styles --> <link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/0.b4545edb68e147de7949.css" /><link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/191.b4545edb68e147de7949.css" /><link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/155.b4545edb68e147de7949.css" /> <link rel="stylesheet" media="all" href="https://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-260e48dd9b8c9b04e8d6c6286f76aecb8ac22f273beea6dba3eee902141bcbfe.css" /> <script src="https://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js"></script> <script> window.pageColorData = {"blue":"#3498DB","border":"#E0E0E0","body_background":"#ffffff","font":"#333333","graph":"#3498db","green":"#2fcc66","light_font":"#AAAAAA","link":"#3498db","orange":"#e67e22","red":"#e74c3c","yellow":"#f1c40f","no_data":"#b3bac5"}; </script> <style> /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ body, .layout-content.status.status-api .section .example-container .example-opener .color-secondary, .grouped-items-selector, .layout-content.status.status-full-history .history-nav a.current, div[id^="subscribe-modal"] .modal-footer, div[id^="subscribe-modal"], div[id^="updates-dropdown"] .updates-dropdown-section, #uptime-tooltip .tooltip-box { background-color:#ffffff; } #uptime-tooltip .pointer-container .pointer-smaller { border-bottom-color:#ffffff; } /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ body.status, .color-primary, .color-primary:hover, .layout-content.status-index .status-day .update-title.impact-none a, .layout-content.status-index .status-day .update-title.impact-none a:hover, .layout-content.status-index .timeframes-container .timeframe.active, .layout-content.status-full-history .month .incident-container .impact-none, .layout-content.status.status-index .incidents-list .incident-title.impact-none a, .incident-history .impact-none, .layout-content.status .grouped-items-selector.inline .grouped-item.active, .layout-content.status.status-full-history .history-nav a.current, .layout-content.status.status-full-history .history-nav a:not(.current):hover, div[id^="subscribe-modal"] .modal-header .close, .grouped-item-label, #uptime-tooltip .tooltip-box .tooltip-content .related-events .related-event a.related-event-link { color:#333333; } .layout-content.status.status-index .components-statuses .component-container .name { color:#333333; color:rgba(51,51,51,.8); } /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ small, .layout-content.status .table-row .date, .color-secondary, .layout-content.status .grouped-items-selector.inline .grouped-item, .layout-content.status.status-full-history .history-footer .pagination a.disabled, .layout-content.status.status-full-history .history-nav a, #uptime-tooltip .tooltip-box .tooltip-content .related-events #related-event-header { color:#AAAAAA; } /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ body.status .layout-content.status .border-color, hr, .tooltip-base, .markdown-display table, div[id^="subscribe-modal"], #uptime-tooltip .tooltip-box { border-color:#E0E0E0; } div[id^="subscribe-modal"] .modal-footer, .markdown-display table td { border-top-color:#E0E0E0; } .markdown-display table td + td, .markdown-display table th + th { border-left-color:#E0E0E0; } div[id^="subscribe-modal"] .modal-header, #uptime-tooltip .pointer-container .pointer-larger { border-bottom-color:#E0E0E0; } #uptime-tooltip .tooltip-box .outage-field { /* Generate the background-color for the outage-field from the css_body_background_color and css_border_color. For the default background (#ffffff) and default css_border_color (#e0e0e0), use the luminosity of the default background with a magic number to arrive at the original outage-field background color (#f4f5f7). I used the formula Target Color = Color * alpha + Background * (1 - alpha) to find the magic number of ~0.08. For darker css_body_background_color, luminosity values are lower so alpha trends toward becoming transparent (thus outage-field background becomes same as css_body_background_color). */ background-color: rgba(224,224,224,0.31); /* outage-field border-color alpha is inverse to the luminosity of css_body_background_color. That is to say, with a default white background this border is transparent, but on a black background, it's opaque css_border_color. */ border-color: rgba(224,224,224,0.0); } /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ .layout-content.status.status-index .status-day .update-title.impact-critical a, .layout-content.status.status-index .status-day .update-title.impact-critical a:hover, .layout-content.status.status-index .page-status.status-critical, .layout-content.status.status-index .unresolved-incident.impact-critical .incident-title, .flat-button.background-red { background-color:#e74c3c; } .layout-content.status-index .components-statuses .component-container.status-red:after, .layout-content.status-full-history .month .incident-container .impact-critical, .layout-content.status-incident .incident-name.impact-critical, .layout-content.status.status-index .incidents-list .incident-title.impact-critical a, .status-red .icon-indicator, .incident-history .impact-critical, .components-container .component-inner-container.status-red .component-status, .components-container .component-inner-container.status-red .icon-indicator { color:#e74c3c; } .layout-content.status.status-index .unresolved-incident.impact-critical .updates { border-color:#e74c3c; } /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ .layout-content.status.status-index .status-day .update-title.impact-major a, .layout-content.status.status-index .status-day .update-title.impact-major a:hover, .layout-content.status.status-index .page-status.status-major, .layout-content.status.status-index .unresolved-incident.impact-major .incident-title { background-color:#e67e22; } .layout-content.status-index .components-statuses .component-container.status-orange:after, .layout-content.status-full-history .month .incident-container .impact-major, .layout-content.status-incident .incident-name.impact-major, .layout-content.status.status-index .incidents-list .incident-title.impact-major a, .status-orange .icon-indicator, .incident-history .impact-major, .components-container .component-inner-container.status-orange .component-status, .components-container .component-inner-container.status-orange .icon-indicator { color:#e67e22; } .layout-content.status.status-index .unresolved-incident.impact-major .updates { border-color:#e67e22; } /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ .layout-content.status.status-index .status-day .update-title.impact-minor a, .layout-content.status.status-index .status-day .update-title.impact-minor a:hover, .layout-content.status.status-index .page-status.status-minor, .layout-content.status.status-index .unresolved-incident.impact-minor .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#f1c40f; } .layout-content.status-index .components-statuses .component-container.status-yellow:after, .layout-content.status-full-history .month .incident-container .impact-minor, .layout-content.status-incident .incident-name.impact-minor, .layout-content.status.status-index .incidents-list .incident-title.impact-minor a, .status-yellow .icon-indicator, .incident-history .impact-minor, .components-container .component-inner-container.status-yellow .component-status, .components-container .component-inner-container.status-yellow .icon-indicator, .layout-content.status.manage-subscriptions .confirmation-infobox .fa { color:#f1c40f; } .layout-content.status.status-index .unresolved-incident.impact-minor .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#f1c40f; } /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ .layout-content.status.status-index .status-day .update-title.impact-maintenance a, .layout-content.status.status-index .status-day .update-title.impact-maintenance a:hover, .layout-content.status.status-index .page-status.status-maintenance, .layout-content.status.status-index .unresolved-incident.impact-maintenance .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#3498DB; } .layout-content.status-index .components-statuses .component-container.status-blue:after, .layout-content.status-full-history .month .incident-container .impact-maintenance, .layout-content.status-incident .incident-name.impact-maintenance, .layout-content.status.status-index .incidents-list .incident-title.impact-maintenance a, .status-blue .icon-indicator, .incident-history .impact-maintenance, .components-container .component-inner-container.status-blue .component-status, .components-container .component-inner-container.status-blue .icon-indicator { color:#3498DB; } .layout-content.status.status-index .unresolved-incident.impact-maintenance .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#3498DB; } /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ .layout-content.status.status-index .page-status.status-none { background-color:#2fcc66; } .layout-content.status-index .components-statuses .component-container.status-green:after, .status-green .icon-indicator, .components-container .component-inner-container.status-green .component-status, .components-container .component-inner-container.status-green .icon-indicator { color:#2fcc66; } /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ a, a:hover, .layout-content.status-index .page-footer span a:hover, .layout-content.status-index .timeframes-container .timeframe:not(.active):hover, .layout-content.status-incident .subheader a:hover { color:#3498db; } .flat-button, .masthead .updates-dropdown-container .show-updates-dropdown, .layout-content.status-full-history .show-filter.open { background-color:#3498db; } /* CUSTOM COLOR OVERRIDES FOR UPTIME SHOWCASE */ .components-section .components-uptime-link { color: #aaaaaa; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item { color: #aaaaaa; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item.light { color: #aaaaaa; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .spacer { background: #aaaaaa; opacity: 1; } </style> <!-- custom css --> <!-- polyfills --> <script crossorigin="anonymous" src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.js"></script> <!-- Le HTML5 shim --> <!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- injection for static --> </head> <body class="status history status-none"> <div class="layout-content status status-full-history premium"> <div class="masthead-container premium"> <div class="masthead"> <div class="images-container" id="cover-image-container" data-js-hook="images-container"></div> <style> #cover-image-container { background-image:url("//dka575ofm4ao0.cloudfront.net/pages-hero_covers/normal/407/open-uri20130626-9596-14zd1yg"); } @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi) { #cover-image-container { background-image:url("//dka575ofm4ao0.cloudfront.net/pages-hero_covers/retina/407/open-uri20130626-9596-14zd1yg") !important; } } </style> <div class="text-container"> <span class="page-name font-largest"> <a target="_blank" href="https://www.python.org">Python Infrastructure</a> </span> <div class="updates-dropdown-container" data-js-hook="updates-dropdown-container"> <a href="#" data-js-hook="show-updates-dropdown" id="show-updates-dropdown" class="show-updates-dropdown" aria-label="Subscribe to updates" aria-expanded="false" aria-haspopup="dialog" role="button"> </a> <!-- Accessibility guidelines for tabs: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html --> <div class="updates-dropdown" data-js-hook="updates-dropdown" id="updates-dropdown" style="display:none"> <div class="updates-dropdown-nav nav-items-7" role="tablist" aria-label="Subscribe to updates"> <a href="#updates-dropdown-email" aria-controls="updates-dropdown-email" aria-label="Subscribe via email" role="tab" aria-selected="true" id="updates-dropdown-email-btn"> <span class="icon-container email"> </a> <a href="#updates-dropdown-sms" aria-controls="updates-dropdown-sms" aria-label="Subscribe via SMS" role="tab" id="updates-dropdown-sms-btn"> <span class="icon-container sms"> </a> <a href="#updates-dropdown-slack" aria-controls="updates-dropdown-slack" aria-label="Subscribe via slack" role="tab" id="updates-dropdown-slack-btn"> <span class="icon-container slack"> </a> <a href="#updates-dropdown-webhook" aria-controls="updates-dropdown-webhook" aria-label="Subscribe via webhook" role="tab" id="updates-dropdown-webhook-btn"> <span class="icon-container webhook"> </a> <a href="#updates-dropdown-twitter" aria-controls="updates-dropdown-twitter" aria-label="Subscribe via twitter" role="tab" id="updates-dropdown-twitter-btn"> <span class="icon-container twitter"> </a> <a href="#updates-dropdown-atom" aria-controls="updates-dropdown-atom" aria-label="Subscribe via RSS" role="tab" id="updates-dropdown-atom-btn"> <span class="icon-container rss"> </a> <button data-js-hook="updates-dropdown-close" aria-label="Close subscribe form" id="updates-dropdown-close-btn"> x </button> </div> <div class="updates-dropdown-sections-container"> <div class="updates-dropdown-section email" id="updates-dropdown-email" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-email-btn"> <div class="directions"> Get email notifications whenever Python Infrastructure <strong>creates</strong>, <strong>updates</strong> or <strong>resolves</strong> an incident. </div> <form id="subscribe-form-email" action="/subscriptions/new-email" accept-charset="UTF-8" data-remote="true" method="post"> <input type="hidden" name="email_otp_verify_flow" id="email_otp_verify_flow" value="false" autocomplete="off" /> <!-- make sure not to put cookie values in here since this gets cached --> <label for="email">Email address:</label> <input name="email" id="email" type="text" class="full-width" data-js-hook="email-notification-field" autocomplete="email"> <input name="email_otp_auth_token" type='hidden' id="email-otp-token-field"> <div class="opt-container-section" id="email-otp-container", style="display:none" > <label for="email-otp">Enter OTP:</label> <input name="otp" id="email-otp" type="text" value="" class="prepend full-width"> <p id="email-otp-timer">Resend OTP in: <span id="email-otp-countdown"></span> seconds </p> <p id="resend-email-otp"> Didn't receive the OTP? <a href="#" id="resend-email-otp-btn" >Resend OTP </a> </p> </div> <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> <input type="submit" value="Subscribe via Email" class="flat-button full-width g-recaptcha" id="subscribe-btn-email" data-disabled-text="Subscribing..." data-sitekey=6LdTS8AUAAAAAOIbCKoCAP4LQku1olYGrywPTaZz data-callback="submitNewEmailSubscriber" data-error-callback="emailSubscriberCaptchaError" > <div class="terms_and_privacy_information bottom small"><div class="privacy_policy_information small">By subscribing you agree to our <a target="_blank" rel="noopener" href="https://www.python.org/privacy/">Privacy Policy</a>.</div> This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> </form> </div> <div class="updates-dropdown-section phone" id="updates-dropdown-sms" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-sms-btn"> <div class="directions"> Get text message notifications whenever Python Infrastructure <strong>creates</strong> or <strong>resolves</strong> an incident. </div> <form id="subscribe-form-sms" action="/subscriptions/new-sms" accept-charset="UTF-8" data-remote="true" method="post"> <input type="hidden" name="otp_verify_flow" id="otp_verify_flow" value="false" autocomplete="off" /> <input type="hidden" name="subscriber_code" id="subscriber_code" value="" autocomplete="off" /> <div class="control-group"> <div class="controls externalities-sms-container"> <!-- make sure not to put cookie values in here since this gets cached --> <label for="phone-country">Country code:</label> <div id="phone-number-country-code" class="phone-country-wrapper" data-otp-enabled="false"> <select name="phone_country" id="phone-country" data-js-hook="phone-country" class="phone-country"><option value="af" data-otp-enabled="false" >Afghanistan (+93)</option> <option value="al" data-otp-enabled="false" >Albania (+355)</option> <option value="dz" data-otp-enabled="false" >Algeria (+213)</option> <option value="as" data-otp-enabled="false" >American Samoa (+1)</option> <option value="ad" data-otp-enabled="false" >Andorra (+376)</option> <option value="ao" data-otp-enabled="false" >Angola (+244)</option> <option value="ai" data-otp-enabled="false" >Anguilla (+1)</option> <option value="ag" data-otp-enabled="false" >Antigua and Barbuda (+1)</option> <option value="ar" data-otp-enabled="false" >Argentina (+54)</option> <option value="am" data-otp-enabled="false" >Armenia (+374)</option> <option value="aw" data-otp-enabled="false" >Aruba (+297)</option> <option value="au" data-otp-enabled="false" >Australia/Cocos/Christmas Island (+61)</option> <option value="at" data-otp-enabled="false" >Austria (+43)</option> <option value="az" data-otp-enabled="false" >Azerbaijan (+994)</option> <option value="bs" data-otp-enabled="false" >Bahamas (+1)</option> <option value="bh" data-otp-enabled="false" >Bahrain (+973)</option> <option value="bd" data-otp-enabled="false" >Bangladesh (+880)</option> <option value="bb" data-otp-enabled="false" >Barbados (+1)</option> <option value="by" data-otp-enabled="false" >Belarus (+375)</option> <option value="be" data-otp-enabled="false" >Belgium (+32)</option> <option value="bz" data-otp-enabled="false" >Belize (+501)</option> <option value="bj" data-otp-enabled="false" >Benin (+229)</option> <option value="bm" data-otp-enabled="false" >Bermuda (+1)</option> <option value="bo" data-otp-enabled="false" >Bolivia (+591)</option> <option value="ba" data-otp-enabled="false" >Bosnia and Herzegovina (+387)</option> <option value="bw" data-otp-enabled="false" >Botswana (+267)</option> <option value="br" data-otp-enabled="false" >Brazil (+55)</option> <option value="bn" data-otp-enabled="false" >Brunei (+673)</option> <option value="bg" data-otp-enabled="false" >Bulgaria (+359)</option> <option value="bf" data-otp-enabled="false" >Burkina Faso (+226)</option> <option value="bi" data-otp-enabled="false" >Burundi (+257)</option> <option value="kh" data-otp-enabled="false" >Cambodia (+855)</option> <option value="cm" data-otp-enabled="false" >Cameroon (+237)</option> <option value="ca" data-otp-enabled="false" >Canada (+1)</option> <option value="cv" data-otp-enabled="false" >Cape Verde (+238)</option> <option value="ky" data-otp-enabled="false" >Cayman Islands (+1)</option> <option value="cf" data-otp-enabled="false" >Central Africa (+236)</option> <option value="td" data-otp-enabled="false" >Chad (+235)</option> <option value="cl" data-otp-enabled="false" >Chile (+56)</option> <option value="cn" data-otp-enabled="false" >China (+86)</option> <option value="co" data-otp-enabled="false" >Colombia (+57)</option> <option value="km" data-otp-enabled="false" >Comoros (+269)</option> <option value="cg" data-otp-enabled="false" >Congo (+242)</option> <option value="cd" data-otp-enabled="false" >Congo, Dem Rep (+243)</option> <option value="cr" data-otp-enabled="false" >Costa Rica (+506)</option> <option value="hr" data-otp-enabled="false" >Croatia (+385)</option> <option value="cy" data-otp-enabled="false" >Cyprus (+357)</option> <option value="cz" data-otp-enabled="false" >Czech Republic (+420)</option> <option value="dk" data-otp-enabled="false" >Denmark (+45)</option> <option value="dj" data-otp-enabled="false" >Djibouti (+253)</option> <option value="dm" data-otp-enabled="false" >Dominica (+1)</option> <option value="do" data-otp-enabled="false" >Dominican Republic (+1)</option> <option value="eg" data-otp-enabled="false" >Egypt (+20)</option> <option value="sv" data-otp-enabled="false" >El Salvador (+503)</option> <option value="gq" data-otp-enabled="false" >Equatorial Guinea (+240)</option> <option value="ee" data-otp-enabled="false" >Estonia (+372)</option> <option value="et" data-otp-enabled="false" >Ethiopia (+251)</option> <option value="fo" data-otp-enabled="false" >Faroe Islands (+298)</option> <option value="fj" data-otp-enabled="false" >Fiji (+679)</option> <option value="fi" data-otp-enabled="false" >Finland/Aland Islands (+358)</option> <option value="fr" data-otp-enabled="false" >France (+33)</option> <option value="gf" data-otp-enabled="false" >French Guiana (+594)</option> <option value="pf" data-otp-enabled="false" >French Polynesia (+689)</option> <option value="ga" data-otp-enabled="false" >Gabon (+241)</option> <option value="gm" data-otp-enabled="false" >Gambia (+220)</option> <option value="ge" data-otp-enabled="false" >Georgia (+995)</option> <option value="de" data-otp-enabled="false" >Germany (+49)</option> <option value="gh" data-otp-enabled="false" >Ghana (+233)</option> <option value="gi" data-otp-enabled="false" >Gibraltar (+350)</option> <option value="gr" data-otp-enabled="false" >Greece (+30)</option> <option value="gl" data-otp-enabled="false" >Greenland (+299)</option> <option value="gd" data-otp-enabled="false" >Grenada (+1)</option> <option value="gp" data-otp-enabled="false" >Guadeloupe (+590)</option> <option value="gu" data-otp-enabled="false" >Guam (+1)</option> <option value="gt" data-otp-enabled="false" >Guatemala (+502)</option> <option value="gn" data-otp-enabled="false" >Guinea (+224)</option> <option value="gy" data-otp-enabled="false" >Guyana (+592)</option> <option value="ht" data-otp-enabled="false" >Haiti (+509)</option> <option value="hn" data-otp-enabled="false" >Honduras (+504)</option> <option value="hk" data-otp-enabled="false" >Hong Kong (+852)</option> <option value="hu" data-otp-enabled="false" >Hungary (+36)</option> <option value="is" data-otp-enabled="false" >Iceland (+354)</option> <option value="in" data-otp-enabled="false" >India (+91)</option> <option value="id" data-otp-enabled="false" >Indonesia (+62)</option> <option value="iq" data-otp-enabled="false" >Iraq (+964)</option> <option value="ie" data-otp-enabled="false" >Ireland (+353)</option> <option value="il" data-otp-enabled="false" >Israel (+972)</option> <option value="it" data-otp-enabled="false" >Italy (+39)</option> <option value="jm" data-otp-enabled="false" >Jamaica (+1)</option> <option value="jp" data-otp-enabled="false" >Japan (+81)</option> <option value="jo" data-otp-enabled="false" >Jordan (+962)</option> <option value="ke" data-otp-enabled="false" >Kenya (+254)</option> <option value="kr" data-otp-enabled="false" >Korea, Republic of (+82)</option> <option value="xk" data-otp-enabled="false" >Kosovo (+383)</option> <option value="kw" data-otp-enabled="false" >Kuwait (+965)</option> <option value="kg" data-otp-enabled="false" >Kyrgyzstan (+996)</option> <option value="la" data-otp-enabled="false" >Laos (+856)</option> <option value="lv" data-otp-enabled="false" >Latvia (+371)</option> <option value="lb" data-otp-enabled="false" >Lebanon (+961)</option> <option value="ls" data-otp-enabled="false" >Lesotho (+266)</option> <option value="lr" data-otp-enabled="false" >Liberia (+231)</option> <option value="ly" data-otp-enabled="false" >Libya (+218)</option> <option value="li" data-otp-enabled="false" >Liechtenstein (+423)</option> <option value="lt" data-otp-enabled="false" >Lithuania (+370)</option> <option value="lu" data-otp-enabled="false" >Luxembourg (+352)</option> <option value="mo" data-otp-enabled="false" >Macao (+853)</option> <option value="mk" data-otp-enabled="false" >Macedonia (+389)</option> <option value="mg" data-otp-enabled="false" >Madagascar (+261)</option> <option value="mw" data-otp-enabled="false" >Malawi (+265)</option> <option value="my" data-otp-enabled="false" >Malaysia (+60)</option> <option value="mv" data-otp-enabled="false" >Maldives (+960)</option> <option value="ml" data-otp-enabled="false" >Mali (+223)</option> <option value="mt" data-otp-enabled="false" >Malta (+356)</option> <option value="mq" data-otp-enabled="false" >Martinique (+596)</option> <option value="mr" data-otp-enabled="false" >Mauritania (+222)</option> <option value="mu" data-otp-enabled="false" >Mauritius (+230)</option> <option value="mx" data-otp-enabled="false" >Mexico (+52)</option> <option value="mc" data-otp-enabled="false" >Monaco (+377)</option> <option value="mn" data-otp-enabled="false" >Mongolia (+976)</option> <option value="me" data-otp-enabled="false" >Montenegro (+382)</option> <option value="ms" data-otp-enabled="false" >Montserrat (+1)</option> <option value="ma" data-otp-enabled="false" >Morocco/Western Sahara (+212)</option> <option value="mz" data-otp-enabled="false" >Mozambique (+258)</option> <option value="na" data-otp-enabled="false" >Namibia (+264)</option> <option value="np" data-otp-enabled="false" >Nepal (+977)</option> <option value="nl" data-otp-enabled="false" >Netherlands (+31)</option> <option value="nz" data-otp-enabled="false" >New Zealand (+64)</option> <option value="ni" data-otp-enabled="false" >Nicaragua (+505)</option> <option value="ne" data-otp-enabled="false" >Niger (+227)</option> <option value="ng" data-otp-enabled="false" >Nigeria (+234)</option> <option value="no" data-otp-enabled="false" >Norway (+47)</option> <option value="om" data-otp-enabled="false" >Oman (+968)</option> <option value="pk" data-otp-enabled="false" >Pakistan (+92)</option> <option value="ps" data-otp-enabled="false" >Palestinian Territory (+970)</option> <option value="pa" data-otp-enabled="false" >Panama (+507)</option> <option value="py" data-otp-enabled="false" >Paraguay (+595)</option> <option value="pe" data-otp-enabled="false" >Peru (+51)</option> <option value="ph" data-otp-enabled="false" >Philippines (+63)</option> <option value="pl" data-otp-enabled="false" >Poland (+48)</option> <option value="pt" data-otp-enabled="false" >Portugal (+351)</option> <option value="pr" data-otp-enabled="false" >Puerto Rico (+1)</option> <option value="qa" data-otp-enabled="false" >Qatar (+974)</option> <option value="re" data-otp-enabled="false" >Reunion/Mayotte (+262)</option> <option value="ro" data-otp-enabled="false" >Romania (+40)</option> <option value="ru" data-otp-enabled="false" >Russia/Kazakhstan (+7)</option> <option value="rw" data-otp-enabled="false" >Rwanda (+250)</option> <option value="ws" data-otp-enabled="false" >Samoa (+685)</option> <option value="sm" data-otp-enabled="false" >San Marino (+378)</option> <option value="sa" data-otp-enabled="false" >Saudi Arabia (+966)</option> <option value="sn" data-otp-enabled="false" >Senegal (+221)</option> <option value="rs" data-otp-enabled="false" >Serbia (+381)</option> <option value="sc" data-otp-enabled="false" >Seychelles (+248)</option> <option value="sl" data-otp-enabled="false" >Sierra Leone (+232)</option> <option value="sg" data-otp-enabled="false" >Singapore (+65)</option> <option value="sk" data-otp-enabled="false" >Slovakia (+421)</option> <option value="si" data-otp-enabled="false" >Slovenia (+386)</option> <option value="za" data-otp-enabled="false" >South Africa (+27)</option> <option value="es" data-otp-enabled="false" >Spain (+34)</option> <option value="lk" data-otp-enabled="false" >Sri Lanka (+94)</option> <option value="kn" data-otp-enabled="false" >St Kitts and Nevis (+1)</option> <option value="lc" data-otp-enabled="false" >St Lucia (+1)</option> <option value="vc" data-otp-enabled="false" >St Vincent Grenadines (+1)</option> <option value="sd" data-otp-enabled="false" >Sudan (+249)</option> <option value="sr" data-otp-enabled="false" >Suriname (+597)</option> <option value="sz" data-otp-enabled="false" >Swaziland (+268)</option> <option value="se" data-otp-enabled="false" >Sweden (+46)</option> <option value="ch" data-otp-enabled="false" >Switzerland (+41)</option> <option value="tw" data-otp-enabled="false" >Taiwan (+886)</option> <option value="tj" data-otp-enabled="false" >Tajikistan (+992)</option> <option value="tz" data-otp-enabled="false" >Tanzania (+255)</option> <option value="th" data-otp-enabled="false" >Thailand (+66)</option> <option value="tg" data-otp-enabled="false" >Togo (+228)</option> <option value="to" data-otp-enabled="false" >Tonga (+676)</option> <option value="tt" data-otp-enabled="false" >Trinidad and Tobago (+1)</option> <option value="tn" data-otp-enabled="false" >Tunisia (+216)</option> <option value="tr" data-otp-enabled="false" >Turkey (+90)</option> <option value="tc" data-otp-enabled="false" >Turks and Caicos Islands (+1)</option> <option value="ug" data-otp-enabled="false" >Uganda (+256)</option> <option value="ua" data-otp-enabled="false" >Ukraine (+380)</option> <option value="ae" data-otp-enabled="false" >United Arab Emirates (+971)</option> <option value="gb" data-otp-enabled="false" >United Kingdom (+44)</option> <option value="us" data-otp-enabled="false" selected>United States (+1)</option> <option value="uy" data-otp-enabled="false" >Uruguay (+598)</option> <option value="uz" data-otp-enabled="false" >Uzbekistan (+998)</option> <option value="ve" data-otp-enabled="false" >Venezuela (+58)</option> <option value="vn" data-otp-enabled="false" >Vietnam (+84)</option> <option value="vg" data-otp-enabled="false" >Virgin Islands, British (+1)</option> <option value="vi" data-otp-enabled="false" >Virgin Islands, U.S. (+1)</option> <option value="ye" data-otp-enabled="false" >Yemen (+967)</option> <option value="zm" data-otp-enabled="false" >Zambia (+260)</option> <option value="zw" data-otp-enabled="false" >Zimbabwe (+263)</option></select> </div> <label for="phone-number">Phone number:</label> <input name="phone_number" id="phone-number" type="text" class="prepend full-width" data-js-hook="sms-notification-field"> <div class="sms-atl-error" id="sms-atl-error"></div> <div class="clearfix"></div> <div class="opt-container-section" id="otp-container" style="display:none"> <a href="#" id="btn-subcriber-change-number">Change number</a> <label for="otp">Enter OTP:</label> <input name="otp" id="otp" type="text" class="prepend full-width"> <p id="timer">Resend OTP in: <span id="countdown">30</span> seconds </p> <p id="resend"> Didn't receive the OTP? <a href="#" id="resend-otp-btn" >Resend OTP </a> </p> </div> </div> </div> <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> <input type="submit" value="Subscribe via Text Message" class="flat-button full-width g-recaptcha" id="subscribe-btn-sms" data-disabled-text="Subscribing..." data-sitekey=6LcH-b0UAAAAACVQtMb14LBhflMA9y0Nmu7l_W6d data-callback="submitNewSmsSubscriber" data-error-callback="smsSubscriberCaptchaError"> <div class="terms_and_privacy_information bottom small">Message and data rates may apply. By subscribing you agree to our <a target="_blank" rel="noopener" href="https://www.python.org/privacy/">Privacy Policy</a>, the Atlassian <a target="_blank" rel="noopener" href="https://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms">Terms of Service</a>, and the Atlassian <a target="_blank" rel="noopener" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>. This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> </form> </div> <div class="updates-dropdown-section slack" id="updates-dropdown-slack" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-slack-btn"> <div class="directions"> Get incident updates and maintenance status messages in Slack. </div> <a value="Subscribe via Slack" class="flat-button full-width" id="subscribe-btn-slack" data-disabled-text="Subscribing..." data-revert-on-success="true" style="margin-top:.75rem" href="https://subscriptions.statuspage.io/slack_authentication/kickoff?page_code=2p66nmmycsj3">Subscribe via Slack</a> <div class="terms_and_privacy_information bottom small">By subscribing you acknowledge our <a target="_blank" rel="noopener" href="https://www.python.org/privacy/">Privacy Policy</a>. In addition, you agree to the Atlassian <a target="_blank" rel="noopener" href="https://www.atlassian.com/legal/cloud-terms-of-service">Cloud Terms of Service</a> and acknowledge Atlassian's <a target="_blank" rel="noopener" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>.</div> </div> <div class="updates-dropdown-section webhook" id="updates-dropdown-webhook" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-webhook-btn"> <div class="directions"> Get webhook notifications whenever Python Infrastructure <strong>creates</strong> an incident, <strong>updates</strong> an incident, <strong>resolves</strong> an incident or <strong>changes</strong> a component status. </div> <form id="subscribe-form-webhook" action="/subscriptions/webhook.json" accept-charset="UTF-8" data-remote="true" method="post"> <div class="control-group"> <div class="controls"> <label for="endpoint-webhooks">Webhook URL:</label> <input type="text" name="endpoint" id="endpoint-webhooks" data-js-hook="endpoint" class="full-width" aria-describedby="url-help-block" /> <p class="help-block" id="url-help-block">The URL we should send the webhooks to</p> </div> </div> <div class="control-group"> <div class="controls"> <label for="email-webhooks">Email address:</label> <input type="text" name="email" id="email-webhooks" data-js-hook="email" class="full-width" aria-describedby="email-help-block" /> <p class="help-block" id="email-help-block">We'll send you email if your endpoint fails</p> </div> </div> <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> <input type="submit" value=Subscribe To Notifications class="flat-button full-width g-recaptcha" id="subscribe-btn-webhook" data-disabled-text="Subscribing..." data-sitekey=6LcQ-b0UAAAAAJjfdwO_-ozGC-CzWDj4Pm1kJ2Ah data-callback="submitNewWebhookSubscriber" data-error-callback="webhookSubscriberCaptchaError"> <div class="terms_and_privacy_information bottom small"><div class="privacy_policy_information small">By subscribing you agree to our <a target="_blank" rel="noopener" href="https://www.python.org/privacy/">Privacy Policy</a>.</div> This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> </form> </div> <div class="updates-dropdown-section twitter" id="updates-dropdown-twitter" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-twitter-btn"> <a href="https://twitter.com/PythonStatus" class="twitter-follow-button" data-show-count="false" data-show-screen-name="true" data-width="59px">Follow @PythonStatus</a> or <a href="https://twitter.com/PythonStatus" target="_blank">view our profile</a>. <style> .twitter-follow-button { margin-bottom: -6px; } </style> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </div> <div class="updates-dropdown-section atom" id="updates-dropdown-atom" role="tabpanel" aria-labelledby="updates-dropdown-atom-btn"> Get the <a href="https://status.python.org/history.atom" target="_blank">Atom Feed</a> or <a href="https://status.python.org/history.rss" target="_blank">RSS Feed</a>. </div> </div> </div> </div> <script> $(function () { const phoneNumberInput = $('#phone-number'); const errorDiv = $('#sms-atl-error') if(errorDiv.length){ function checkSelectedCountry() { const selectedCountry = $('#phone-country').val(); const isOtpEnabled = $('#phone-number-country-code').attr('data-otp-enabled') === 'true'; const form = document.getElementById('subscribe-form-sms'); form.action = '/subscriptions/new-sms'; const isOtpFlow = document.getElementById('otp_verify_flow'); document.getElementById('otp-container').style.display = "none"; if(false && selectedCountry === 'sg') { // Replace 'SG' with the actual value representing Singapore in your select tag phoneNumberInput.prop('disabled', true); errorDiv.html(`Due to new Singapore government regulations, we're currently not supporting text subscriptions in Singapore.<a href="https://community.atlassian.com/t5/Statuspage-articles/Attention-SMS-notifications-will-be-disabled-on-August-1st-2023/ba-p/2424398" target="_blank"> Learn more.</a> <br> Select another method to subscribe.`); } else { phoneNumberInput.prop('readonly', false); errorDiv.html(''); if(false){ if(isOtpEnabled){ document.getElementById('subscribe-btn-sms').value = "Send OTP"; } else { isOtpFlow.value = false; document.getElementById('subscribe-btn-sms').value = "Subscribe via Text Message"; } } } } $('#phone-country').on('change', checkSelectedCountry); checkSelectedCountry(); } }); document.addEventListener('DOMContentLoaded', function() { const dropdown = document.querySelector('#phone-number-country-code .phone-country'); if (dropdown){ const wrapperDiv = document.getElementById('phone-number-country-code'); const selectedOption = dropdown.options[dropdown.selectedIndex]; const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); dropdown.addEventListener('change', function() { const selectedOption = dropdown.options[dropdown.selectedIndex]; const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); }); } }); var countdownTimer; var resendBtn = document.getElementById('resend'); var timer = document.getElementById('timer'); var form = document.getElementById('subscribe-form-sms'); var RESEND_TIMER = 30; $(function() { $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ const form = this; const action = form.getAttribute('action'); if (data.type === 'success' && data.otp_flow === true) { document.getElementById('subscriber_code').value = data.subscriber_code document.getElementById('otp-container').style.display = "block"; $('#phone-number').prop('readonly', true); var display = document.getElementById('countdown'); disableResend(); startTimer(RESEND_TIMER, display) document.getElementById('subscribe-btn-sms').value = "Verify OTP and Subscribe"; document.getElementById('otp_verify_flow').value = true; form.action = '/subscriptions/verify-otp'; } else if (data.type === 'success' && action.includes('verify')){ document.getElementById('otp-container').style.display = "none"; $('#phone-number').val('').prop('readonly', false); $('#otp').val(''); document.getElementById('subscribe-btn-sms').value = "Send OTP"; document.getElementById('otp_verify_flow').value = false; form.action = '/subscriptions/new-sms'; SP.currentPage.updatesDropdown.hide(); } }); $("#btn-subcriber-change-number").on('click', () => { document.getElementById('otp-container').style.display = "none"; $('#phone-number').prop('readonly', false); document.getElementById('subscribe-btn-sms').value = "Send OTP"; form.action = '/subscriptions/new-sms'; return false }) $('#resend-otp-btn').on('click', function(e) { e.preventDefault(); let phoneNumber = $('#phone-number').val(); let countryCode = $('.phone-country').val(); $.ajax({ type: 'POST', url: "/subscriptions/new-sms", data: { phone_number: phoneNumber, phone_country: countryCode, type: 'resend' }, }).done(function(data) { var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); var display = document.getElementById('countdown'); disableResend(); timer.style.display = "none" if (data.type === 'success') { startTimer(RESEND_TIMER, display); } }) }); }) function startTimer(duration, display){ var timer = duration, seconds; clearInterval(countdownTimer); countdownTimer = setInterval(function () { seconds = parseInt(timer % 60, 10); display.textContent = seconds; if(--timer < 0){ enableResend(); clearInterval(countdownTimer); } }, 1000); disableResend(); } function enableResend(){ resendBtn.style.display = "block"; timer.style.display = "none" } function disableResend(){ resendBtn.style.display = "none"; timer.style.display = "block" } $(function() { $('#subscribe-form-email').on('submit', function() { var tokenField = document.getElementById('email-otp-token-field'); let page_code = "2p66nmmycsj3" let key = keyForEmailOtpToken($('#email').val(), page_code); tokenField.value = localStorage.getItem(key); }); }); var emailOtpCountdownTimer; var emailOtpResendBtn = document.getElementById('resend-email-otp'); var emailOtpTimer = document.getElementById('email-otp-timer'); var emailOtpForm = document.getElementById('subscribe-form-email'); var EMAIL_OTP_RESEND_TIMER = 600; $(function() { $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ const form = this; const action = form.getAttribute('action'); if (data.type === 'success' && data.email_otp_verify_flow === true) { document.getElementById('email-otp-container').style.display = "block"; var display = document.getElementById('email-otp-countdown'); display.textContent = EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display) document.getElementById('subscribe-btn-email').value = "Verify OTP and Subscribe"; document.getElementById('email_otp_verify_flow').value = true; form.action = '/subscriptions/verify-email-otp'; } else if (data.type === 'success' && action.includes('verify')){ let email = $('#email') let page_code = "2p66nmmycsj3" let key = keyForEmailOtpToken(email.val(), page_code); localStorage.setItem(key, data.email_otp_auth_token); document.getElementById('email-otp-container').style.display = "none"; email.val('').prop('readonly', false); $('#email-otp').val(''); document.getElementById('subscribe-btn-email').value = "Send OTP"; document.getElementById('email_otp_verify_flow').value = false; form.action = '/subscriptions/new-email'; SP.currentPage.updatesDropdown.hide(); } }); $('#resend-email-otp-btn').on('click', function(e) { e.preventDefault(); let email = $('#email').val(); $.ajax({ type: 'POST', url: "/subscriptions/new-email", data: { email: email }, }).done(function(data) { var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); if (data.type === 'success') { var display = document.getElementById('email-otp-countdown'); display.textContent = EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); emailOtpTimer.style.display = "none" startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display); } }) }); }) function startEmailOtpTimer(duration, display){ var timer = duration, seconds; clearInterval(emailOtpCountdownTimer); emailOtpCountdownTimer = setInterval(function () { seconds = parseInt(timer, 10); display.textContent = seconds; if(--timer < 0){ enableEmailOtpResend(); clearInterval(emailOtpCountdownTimer); } }, 1000); disableEmailOtpResend(); } function enableEmailOtpResend(){ emailOtpResendBtn.style.display = "block"; emailOtpTimer.style.display = "none" } function disableEmailOtpResend(){ emailOtpResendBtn.style.display = "none"; emailOtpTimer.style.display = "block" } function keyForEmailOtpToken(email, pageCode) { return email + '|' + pageCode+ '|SUBSCRIBE_VIA_EMAIL'; } </script> </div> </div> </div> <!-- this is outside of the .container so that the cover photo can go full width on mobile --> <div class="container"> <div class="history-nav border-color"> <ul> <li> <a class="button current border-color" href="https://status.python.org/history" aria-label="Incidents" aria-current=page>Incidents</a> </li> <li> <a class="button border-color" href="https://status.python.org/uptime" aria-label="Uptime" >Uptime</a> </li> </ul> </div> <div data-react-class="HistoryIndex" data-react-props="{"page_status":{"page":{"name":"Python Infrastructure","subdomain":"python","domain":"status.python.org","created_at":"2013-06-26T03:09:00.667Z","updated_at":"2025-02-17T13:43:10.689Z","url":"https://www.python.org","hidden_from_search":false,"css_body_background_color":"ffffff","css_font_color":"333333","css_light_font_color":"AAAAAA","css_greens":"2fcc66","css_yellows":"f1c40f","css_oranges":"e67e22","css_reds":"e74c3c","allow_page_subscribers":true,"allow_incident_subscribers":true,"notifications_from_email":"notifications@mail.status.python.org","allow_email_subscribers":true,"allow_sms_subscribers":true,"twitter_username":"PythonStatus","branding":"premium","support_url":null,"allow_webhook_subscribers":true,"css_border_color":"E0E0E0","css_graph_color":"3498db","css_link_color":"3498db","page_description":null,"activity_score":613,"headline":null,"viewers_must_be_team_members":false,"ip_filters":null,"css_blues":"3498DB","time_zone":"UTC","notifications_reply_to_email":null,"notifications_email_footer":"You received this email because you are subscribed to Python Infrastructure's service status notifications.","allow_rss_atom_feeds":true,"black_hole":null,"over_allocations_cohort":null,"over_allocations_resolved_at":null,"custom_components_limit":null,"allow_slack_subscribers":true,"css_no_data":"b3bac5","deleted_at":null,"allow_teams_subscription":false,"max_maintenance_automation_allowed":null,"hero_cover":{"updated_at":"2013-06-26T21:01:28.000+00:00","original_url":"//dka575ofm4ao0.cloudfront.net/pages-hero_covers/original/407/open-uri20130626-9596-14zd1yg","size":145179,"normal_url":"//dka575ofm4ao0.cloudfront.net/pages-hero_covers/normal/407/open-uri20130626-9596-14zd1yg","retina_url":"//dka575ofm4ao0.cloudfront.net/pages-hero_covers/retina/407/open-uri20130626-9596-14zd1yg"},"transactional_logo":{"updated_at":null,"original_url":"","size":null,"normal_url":"","retina_url":""},"favicon_logo":{"updated_at":null,"size":null,"url":""},"email_logo":{"updated_at":null,"original_url":"","size":null,"normal_url":"","retina_url":""},"twitter_logo":{"updated_at":null,"size":null,"url":""},"id":"2p66nmmycsj3","organization_id":"9y2klhzbxsgk"}},"components":[{"status":"operational","name":"python.org","created_at":"2020-04-14T15:49:23.797Z","updated_at":"2020-04-14T16:24:39.112Z","position":1,"description":"Homepage for the Python language and Python Software Foundation. Hosts downloads, links to more information, and resources for the community.","showcase":false,"start_date":null,"id":"ncnbrqhvsvxk","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["1hfhkd3kvhn9","z5zzdnvb32j5","09dyxnnk3tj3"]},{"status":"operational","name":"python.org - CDN","created_at":"2013-06-26T21:14:42.806Z","updated_at":"2024-08-26T20:16:22.665Z","position":1,"description":"Availability of python.org at our CDN edge.","showcase":true,"start_date":null,"id":"1hfhkd3kvhn9","group_id":"ncnbrqhvsvxk","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"python.org - Backends","created_at":"2020-04-14T15:50:44.817Z","updated_at":"2025-02-06T17:49:39.000Z","position":2,"description":"Availability of python.org's backend servers.","showcase":true,"start_date":null,"id":"z5zzdnvb32j5","group_id":"ncnbrqhvsvxk","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"python.org - Downloads Backends","created_at":"2024-08-26T20:07:50.651Z","updated_at":"2024-12-13T14:58:47.292Z","position":3,"description":"The backends that serve Python download files.","showcase":true,"start_date":"2024-08-26T00:00:00.000Z","id":"09dyxnnk3tj3","group_id":"ncnbrqhvsvxk","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"PyPI","created_at":"2018-04-18T13:47:26.997Z","updated_at":"2020-04-14T15:49:48.339Z","position":2,"description":null,"showcase":false,"start_date":null,"id":"dhqvcb8lvrh1","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["06hwjcnhlz03","xt7f24hjvspn","yjlyv2k3zz3p","5k8sx11bnccq","frjs3hvgp2bk","p2b1wmgvmwln","nj4jx0hljzvl"]},{"status":"operational","name":"pypi.org - General","created_at":"2022-11-11T22:24:00.989Z","updated_at":"2024-11-13T19:32:39.073Z","position":1,"description":null,"showcase":false,"start_date":"2022-11-11T00:00:00.000Z","id":"06hwjcnhlz03","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"pypi.org - CDN","created_at":"2018-03-16T15:17:04.464Z","updated_at":"2024-12-11T04:05:04.000Z","position":2,"description":"Primary PyPI endpoint, serves User Interface and APIs.","showcase":true,"start_date":null,"id":"xt7f24hjvspn","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"pypi.org - Backends","created_at":"2020-04-14T15:15:46.598Z","updated_at":"2024-12-06T10:39:59.000Z","position":3,"description":"The backends that serve pypi.org","showcase":true,"start_date":null,"id":"yjlyv2k3zz3p","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"pypi.org - Email","created_at":"2022-06-27T14:19:00.478Z","updated_at":"2023-03-18T01:00:29.806Z","position":4,"description":"PyPI's email sending functionality including notifications, email validation, password resets, etc.","showcase":false,"start_date":"2022-06-27T00:00:00.000Z","id":"5k8sx11bnccq","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"files.pythonhosted.org - Files","created_at":"2018-04-18T13:48:07.991Z","updated_at":"2024-08-26T20:17:49.816Z","position":5,"description":"Serves Files hosted on PyPI from our Object Store backend.","showcase":true,"start_date":null,"id":"frjs3hvgp2bk","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"files.pythonhosted.org - Redirects","created_at":"2018-04-18T14:15:03.001Z","updated_at":"2022-11-11T22:24:19.285Z","position":6,"description":"Redirect Service for legacy URLS","showcase":false,"start_date":null,"id":"p2b1wmgvmwln","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"files.pythonhosted.org - Redirects Backends","created_at":"2020-04-14T15:21:47.222Z","updated_at":"2024-04-08T20:54:20.000Z","position":7,"description":"Redirect Service for legacy URLS","showcase":false,"start_date":null,"id":"nj4jx0hljzvl","group_id":"dhqvcb8lvrh1","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"PyPI Hosting Platforms","created_at":"2018-05-31T12:27:39.752Z","updated_at":"2020-04-14T15:50:17.237Z","position":3,"description":null,"showcase":false,"start_date":null,"id":"s5r8b11fdhsg","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["kvxh0bsl5gq5","b2thcq3wccy2","ckpp1ygb6q8z","0zjhw49l92qv","0k1l8cz1lntv"]},{"status":"operational","name":"AWS elasticache-us-east-2","created_at":"2018-05-31T12:25:05.289Z","updated_at":"2018-05-31T12:27:39.757Z","position":1,"description":null,"showcase":false,"start_date":null,"id":"kvxh0bsl5gq5","group_id":"s5r8b11fdhsg","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"AWS elb-us-east-2","created_at":"2018-05-31T12:25:09.112Z","updated_at":"2021-06-17T04:44:43.848Z","position":2,"description":null,"showcase":false,"start_date":null,"id":"b2thcq3wccy2","group_id":"s5r8b11fdhsg","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"AWS ec2-us-east-2","created_at":"2018-05-31T12:24:59.615Z","updated_at":"2018-05-31T12:27:58.522Z","position":3,"description":null,"showcase":false,"start_date":null,"id":"ckpp1ygb6q8z","group_id":"s5r8b11fdhsg","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"AWS rds-us-east-2","created_at":"2018-05-31T12:25:14.016Z","updated_at":"2021-06-17T04:52:03.637Z","position":4,"description":null,"showcase":false,"start_date":null,"id":"0zjhw49l92qv","group_id":"s5r8b11fdhsg","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Google Cloud Platform Google Cloud Storage","created_at":"2020-04-14T15:24:20.357Z","updated_at":"2023-09-07T18:58:25.235Z","position":5,"description":null,"showcase":false,"start_date":null,"id":"0k1l8cz1lntv","group_id":"s5r8b11fdhsg","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"docs.python.org","created_at":"2020-04-14T15:54:09.789Z","updated_at":"2020-04-14T15:54:41.679Z","position":4,"description":null,"showcase":false,"start_date":null,"id":"9534wxp4wmw6","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["wqrgtyqnjln9","v2hvtpghfrwp"]},{"status":"operational","name":"docs.python.org - Backends","created_at":"2015-11-13T07:20:28.336Z","updated_at":"2025-01-09T15:09:52.000Z","position":1,"description":"Python documentation","showcase":false,"start_date":null,"id":"wqrgtyqnjln9","group_id":"9534wxp4wmw6","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"docs.python.org - CDN","created_at":"2020-04-14T15:54:23.428Z","updated_at":"2023-01-19T23:10:27.000Z","position":2,"description":null,"showcase":false,"start_date":null,"id":"v2hvtpghfrwp","group_id":"9534wxp4wmw6","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"bugs.python.org","created_at":"2017-02-07T16:26:38.899Z","updated_at":"2025-02-11T07:04:19.000Z","position":5,"description":null,"showcase":false,"start_date":null,"id":"6ybp1pvz8gw1","group_id":null,"page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"wiki.python.org","created_at":"2013-06-26T21:16:03.050Z","updated_at":"2024-12-13T14:58:47.316Z","position":6,"description":null,"showcase":false,"start_date":null,"id":"gr4mkt5lcth8","group_id":null,"page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"mail.python.org","created_at":"2015-10-23T20:04:35.157Z","updated_at":"2020-04-14T16:17:48.565Z","position":7,"description":null,"showcase":false,"start_date":null,"id":"r8q8ln9rn01p","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["15jrs83fkh40","zqjt8mwzvvyy","zjhpksd4vrp0"]},{"status":"operational","name":"Message Handling Services","created_at":"2015-10-23T20:07:12.021Z","updated_at":"2024-11-16T20:24:02.000Z","position":1,"description":null,"showcase":false,"start_date":null,"id":"15jrs83fkh40","group_id":"r8q8ln9rn01p","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Mailing Lists and Archives - Mailman","created_at":"2015-10-23T20:05:21.887Z","updated_at":"2022-01-31T11:30:13.000Z","position":2,"description":null,"showcase":false,"start_date":null,"id":"zqjt8mwzvvyy","group_id":"r8q8ln9rn01p","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Mailing Lists and Archives - Mailman 3","created_at":"2020-04-14T15:59:20.091Z","updated_at":"2025-01-28T03:30:49.000Z","position":3,"description":null,"showcase":false,"start_date":null,"id":"zjhpksd4vrp0","group_id":"r8q8ln9rn01p","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"psfmember.org","created_at":"2017-10-05T02:40:02.892Z","updated_at":"2025-01-12T07:04:22.000Z","position":8,"description":null,"showcase":false,"start_date":null,"id":"tm4ft8zp3zhk","group_id":null,"page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"us.pycon.org","created_at":"2018-01-13T10:56:45.238Z","updated_at":"2024-06-05T15:57:16.943Z","position":9,"description":null,"showcase":false,"start_date":null,"id":"1h06jblff360","group_id":null,"page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"PyPy","created_at":"2020-04-14T16:15:42.514Z","updated_at":"2020-04-14T16:17:48.586Z","position":10,"description":null,"showcase":false,"start_date":null,"id":"m207fbd4yj21","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["fpwfxgsnw7xl"]},{"status":"operational","name":"speed.pypy.org","created_at":"2013-07-02T05:11:31.150Z","updated_at":"2024-12-13T14:58:47.278Z","position":2,"description":null,"showcase":false,"start_date":null,"id":"fpwfxgsnw7xl","group_id":"m207fbd4yj21","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Content Delivery Network","created_at":"2014-12-15T21:57:30.175Z","updated_at":"2020-04-14T16:17:48.720Z","position":11,"description":"Our CDN (Content Delivery Network) is used to serve many services across the Python infrastructure. Issues here may cause localized or global outages for some services.","showcase":false,"start_date":null,"id":"myn8gh5c4241","group_id":null,"page_id":"2p66nmmycsj3","group":true,"only_show_if_degraded":false,"components":["q0p4457f20q6","9xfmnwl8nk9m","ntl29mdp72bn","dtnlrslrh201","symvw7w7yt5k","qrswjt48y6nt","89b6s57xx1nq","n70z3mymqgqw","k1bmjv2lxw72","ww57y0sqznzm","y7mr29n4fb7x","tzf9xjgvt2f5","hq72t7pj211c","tp3zx66wc5sc","j0qhx6d1dj6k","k7jt8v8hclw0","db7ff5bfykmq","cl2tm84h2b9b","cg3k4kmn3bm0","2v5rwbt9vxfx","18q3k532vryh","xrpmsnhgj9x0","tfq4rgbkgv0q","lcncvvqrclbv","d4qkhbkvhhgv","gnyd0pnhv6ql","lmxn2qhczfxb","sksk8x5xmk2x","wgw9swtq47n4","2ysn6z22jnrz","x4yzlktx7s3l","6tm7f1fnyjbw","tl2q6xvf8gmn","hrm0rkt9z4tm","2yhyfn4p0mwm","lk982psnyynp","0rjm0hqypf1z","mwgq21j43dqz","wq61cc55n5wm","m733wyv5wh3k","z72nkdz1ydym","6tnkysbgwy97","y5yvw1dvm3dv","sxwj5t12gxx1","5w67j6f7z8jh","fwxsbr189wm2","1xbvxn2w10b9","3kp00jymqvwr","x88d6w6sqsg4","sn096fvwslw0","86lf40xpc464","5nk1sqy5gldr","rh1p298tdvqn","dzb6x8yh81z9","r3f0ldyy97kp","cqd1nl03kcbm","fd7tt5t12xxr","fkgpwps42l3g","kwzhngbhm8n2","bpcq80vt9cbk","fhhbf9ds6hwg","gpxqtltnt10v","69tjdqjy3svx","kqdvnljff0ws","6q6ytq67vpsl","z1qjvrr9lm1f","2jxxnzf4d8tb","830x7w1wqzhq","pn63bqm4lmgz","qd85tg3vjytl","yn09bzj9h2yr","sl1yx5fms1gf","699mjnhdqdc1","hzz6126jzx2s","r2bzxrdk71f8","gq0n7776rr5t","3wd9p64jl50h","80nrqrnp5b3j","0dnmvgp6rg8g","jl9snbs3pq0m","3tbd3tcfz0st","nxnc7vrg8676","fv7rtxfx5c01","3gnv4ljw70hy","dnnpzrtd9832","zt7b4pjyp5xw","y13qftsfj4n2","3m16bjl694hl","m2vb18f8q108","57zt6dsc5w32","dfpbzq4jn2d3","z2h3q9wdv2rk","xd6nblf2dmsg","wflxj3tq5g4c","w47z9ft3g7rm","smyn3xv84bc4","fw7mm15m4mg0"]},{"status":"operational","name":"Fastly Asia/Pacific (HK)","created_at":"2014-11-02T20:03:39.905Z","updated_at":"2022-03-10T22:31:10.467Z","position":2,"description":null,"showcase":false,"start_date":null,"id":"q0p4457f20q6","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly US East (IAD)","created_at":"2014-11-02T20:03:16.261Z","updated_at":"2022-04-13T00:32:30.076Z","position":3,"description":null,"showcase":false,"start_date":null,"id":"9xfmnwl8nk9m","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly US East (MIA)","created_at":"2014-11-02T20:03:18.886Z","updated_at":"2022-08-16T09:00:38.228Z","position":5,"description":null,"showcase":false,"start_date":null,"id":"ntl29mdp72bn","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly US Central (DEN)","created_at":"2014-11-02T20:03:20.263Z","updated_at":"2021-06-08T11:57:28.052Z","position":6,"description":null,"showcase":false,"start_date":null,"id":"dtnlrslrh201","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly US Central (DFW)","created_at":"2014-11-02T20:03:21.906Z","updated_at":"2022-07-20T12:00:58.286Z","position":7,"description":null,"showcase":false,"start_date":null,"id":"symvw7w7yt5k","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly US West (SEA)","created_at":"2014-11-02T20:03:25.912Z","updated_at":"2022-09-28T19:05:27.087Z","position":10,"description":null,"showcase":false,"start_date":null,"id":"qrswjt48y6nt","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly US West (SJC)","created_at":"2014-11-02T20:03:23.948Z","updated_at":"2021-07-15T15:45:37.554Z","position":11,"description":null,"showcase":false,"start_date":null,"id":"89b6s57xx1nq","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Europe (FRA)","created_at":"2014-11-02T20:03:29.927Z","updated_at":"2022-10-21T06:52:37.053Z","position":12,"description":null,"showcase":false,"start_date":null,"id":"n70z3mymqgqw","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Europe (AMS)","created_at":"2014-11-02T20:03:30.872Z","updated_at":"2022-04-07T10:34:08.379Z","position":13,"description":null,"showcase":false,"start_date":null,"id":"k1bmjv2lxw72","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Europe (LHR)","created_at":"2014-11-02T20:03:33.982Z","updated_at":"2022-11-04T08:17:26.502Z","position":15,"description":null,"showcase":false,"start_date":null,"id":"ww57y0sqznzm","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Asia/Pacific (SYD)","created_at":"2014-11-02T20:03:35.306Z","updated_at":"2022-09-14T12:43:48.426Z","position":16,"description":null,"showcase":false,"start_date":null,"id":"y7mr29n4fb7x","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Asia/Pacific (NZ)","created_at":"2014-11-02T20:03:38.415Z","updated_at":"2022-04-07T10:34:08.403Z","position":19,"description":null,"showcase":false,"start_date":null,"id":"tzf9xjgvt2f5","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Brisbane (BNE)","created_at":"2020-04-14T16:02:30.583Z","updated_at":"2022-07-11T17:42:07.896Z","position":20,"description":null,"showcase":false,"start_date":null,"id":"hq72t7pj211c","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Dubai (FJR)","created_at":"2020-04-14T16:02:31.327Z","updated_at":"2022-10-21T02:22:05.289Z","position":21,"description":null,"showcase":false,"start_date":null,"id":"tp3zx66wc5sc","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Melbourne (MEL)","created_at":"2020-04-14T16:02:32.691Z","updated_at":"2021-06-08T11:57:30.052Z","position":22,"description":null,"showcase":false,"start_date":null,"id":"j0qhx6d1dj6k","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Osaka (ITM)","created_at":"2020-04-14T16:02:34.048Z","updated_at":"2022-05-27T07:34:55.913Z","position":23,"description":null,"showcase":false,"start_date":null,"id":"k7jt8v8hclw0","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Perth (PER)","created_at":"2020-04-14T16:02:34.833Z","updated_at":"2022-03-30T14:24:32.746Z","position":24,"description":null,"showcase":false,"start_date":null,"id":"db7ff5bfykmq","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Tokyo (HND)","created_at":"2020-04-14T16:02:37.884Z","updated_at":"2022-05-28T04:30:36.107Z","position":27,"description":null,"showcase":false,"start_date":null,"id":"cl2tm84h2b9b","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Tokyo (TYO)","created_at":"2020-04-14T16:02:39.549Z","updated_at":"2022-02-04T20:24:20.108Z","position":28,"description":null,"showcase":false,"start_date":null,"id":"cg3k4kmn3bm0","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Wellington (WLG)","created_at":"2020-04-14T16:02:41.061Z","updated_at":"2021-08-05T12:53:37.176Z","position":29,"description":null,"showcase":false,"start_date":null,"id":"2v5rwbt9vxfx","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Dublin (DUB)","created_at":"2020-04-14T16:02:52.533Z","updated_at":"2022-11-08T07:35:59.510Z","position":30,"description":null,"showcase":false,"start_date":null,"id":"18q3k532vryh","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Copenhagen (CPH)","created_at":"2020-04-14T16:02:53.081Z","updated_at":"2022-07-13T02:00:41.765Z","position":31,"description":null,"showcase":false,"start_date":null,"id":"xrpmsnhgj9x0","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Frankfurt (HHN)","created_at":"2020-04-14T16:02:54.905Z","updated_at":"2022-10-21T05:00:28.966Z","position":32,"description":null,"showcase":false,"start_date":null,"id":"tfq4rgbkgv0q","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Helsinki (HEL)","created_at":"2020-04-14T16:02:55.708Z","updated_at":"2022-09-25T23:24:29.952Z","position":33,"description":null,"showcase":false,"start_date":null,"id":"lcncvvqrclbv","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly London (LON)","created_at":"2020-04-14T16:02:56.932Z","updated_at":"2022-11-10T06:13:32.396Z","position":34,"description":null,"showcase":false,"start_date":null,"id":"d4qkhbkvhhgv","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Madrid (MAD)","created_at":"2020-04-14T16:02:57.710Z","updated_at":"2022-08-04T08:18:05.495Z","position":35,"description":null,"showcase":false,"start_date":null,"id":"gnyd0pnhv6ql","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Manchester (MAN)","created_at":"2020-04-14T16:02:58.295Z","updated_at":"2021-06-08T11:57:26.524Z","position":36,"description":null,"showcase":false,"start_date":null,"id":"lmxn2qhczfxb","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Milan (MXP)","created_at":"2020-04-14T16:02:59.929Z","updated_at":"2021-06-08T11:57:27.147Z","position":37,"description":null,"showcase":false,"start_date":null,"id":"sksk8x5xmk2x","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Oslo (OSL)","created_at":"2020-04-14T16:03:00.416Z","updated_at":"2021-06-08T11:57:28.305Z","position":38,"description":null,"showcase":false,"start_date":null,"id":"wgw9swtq47n4","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Buenos Aires (EZE)","created_at":"2020-04-14T16:03:45.010Z","updated_at":"2022-06-13T21:07:05.062Z","position":39,"description":null,"showcase":false,"start_date":null,"id":"2ysn6z22jnrz","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Bogota (BOG)","created_at":"2020-04-14T16:03:44.384Z","updated_at":"2022-10-01T01:25:10.079Z","position":40,"description":null,"showcase":false,"start_date":null,"id":"x4yzlktx7s3l","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Curitiba (CWB)","created_at":"2020-04-14T16:03:43.889Z","updated_at":"2022-06-13T15:53:44.139Z","position":41,"description":null,"showcase":false,"start_date":null,"id":"6tm7f1fnyjbw","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Rio de Janeiro (GIG)","created_at":"2020-04-14T16:03:43.373Z","updated_at":"2022-05-01T21:55:53.947Z","position":42,"description":null,"showcase":false,"start_date":null,"id":"tl2q6xvf8gmn","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Santiago (SCL)","created_at":"2020-04-14T16:03:42.558Z","updated_at":"2022-06-03T10:02:01.153Z","position":43,"description":null,"showcase":false,"start_date":null,"id":"hrm0rkt9z4tm","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Johannesburg (JNB)","created_at":"2020-04-14T16:03:39.611Z","updated_at":"2022-06-22T01:49:07.806Z","position":45,"description":null,"showcase":false,"start_date":null,"id":"2yhyfn4p0mwm","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Cape Town (CPT)","created_at":"2020-04-14T16:03:38.607Z","updated_at":"2021-06-18T07:30:38.969Z","position":46,"description":null,"showcase":false,"start_date":null,"id":"lk982psnyynp","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Vancouver (YVR)","created_at":"2020-04-14T16:03:38.024Z","updated_at":"2021-12-12T11:01:34.899Z","position":47,"description":null,"showcase":false,"start_date":null,"id":"0rjm0hqypf1z","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Toronto (YYZ)","created_at":"2020-04-14T16:03:37.441Z","updated_at":"2022-07-19T09:30:18.209Z","position":48,"description":null,"showcase":false,"start_date":null,"id":"mwgq21j43dqz","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly St. Louis (STL)","created_at":"2020-04-14T16:03:36.657Z","updated_at":"2022-04-07T10:34:09.862Z","position":49,"description":null,"showcase":false,"start_date":null,"id":"wq61cc55n5wm","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Palo Alto (PAO)","created_at":"2020-04-14T16:03:35.003Z","updated_at":"2021-06-08T11:57:33.039Z","position":50,"description":null,"showcase":false,"start_date":null,"id":"m733wyv5wh3k","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Newark (EWR)","created_at":"2020-04-14T16:03:34.382Z","updated_at":"2021-06-08T11:57:34.569Z","position":51,"description":null,"showcase":false,"start_date":null,"id":"z72nkdz1ydym","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly New York (LGA)","created_at":"2020-04-14T16:03:33.807Z","updated_at":"2022-10-30T06:16:56.240Z","position":52,"description":null,"showcase":false,"start_date":null,"id":"6tnkysbgwy97","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Montreal (YUL)","created_at":"2020-04-14T16:03:28.439Z","updated_at":"2022-03-12T00:35:09.501Z","position":53,"description":null,"showcase":false,"start_date":null,"id":"y5yvw1dvm3dv","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Minneapolis (STP)","created_at":"2020-04-14T16:03:27.907Z","updated_at":"2021-06-08T11:57:29.799Z","position":54,"description":null,"showcase":false,"start_date":null,"id":"sxwj5t12gxx1","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Minneapolis (MSP)","created_at":"2020-04-14T16:03:27.348Z","updated_at":"2021-06-08T11:57:34.251Z","position":55,"description":null,"showcase":false,"start_date":null,"id":"5w67j6f7z8jh","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Los Angeles (BUR)","created_at":"2020-04-14T16:03:25.563Z","updated_at":"2022-03-24T11:26:20.770Z","position":56,"description":null,"showcase":false,"start_date":null,"id":"fwxsbr189wm2","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Kansas City (MCI)","created_at":"2020-04-14T16:03:24.996Z","updated_at":"2021-06-08T11:57:29.137Z","position":57,"description":null,"showcase":false,"start_date":null,"id":"1xbvxn2w10b9","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Houston (IAH)","created_at":"2020-04-14T16:03:23.004Z","updated_at":"2021-06-08T11:57:31.530Z","position":59,"description":null,"showcase":false,"start_date":null,"id":"3kp00jymqvwr","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Dallas (DAL)","created_at":"2020-04-14T16:03:21.604Z","updated_at":"2022-09-01T07:17:49.015Z","position":60,"description":null,"showcase":false,"start_date":null,"id":"x88d6w6sqsg4","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Columbus (CMH)","created_at":"2020-04-14T16:03:21.056Z","updated_at":"2022-11-07T15:00:03.809Z","position":61,"description":null,"showcase":false,"start_date":null,"id":"sn096fvwslw0","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Chicago (CHI)","created_at":"2020-04-14T16:03:17.828Z","updated_at":"2022-06-30T06:00:36.666Z","position":64,"description":null,"showcase":false,"start_date":null,"id":"86lf40xpc464","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Boston (BOS)","created_at":"2020-04-14T16:03:16.869Z","updated_at":"2022-10-06T06:54:09.593Z","position":65,"description":null,"showcase":false,"start_date":null,"id":"5nk1sqy5gldr","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Atlanta (PDK)","created_at":"2020-04-14T16:03:16.550Z","updated_at":"2022-08-12T16:58:51.565Z","position":66,"description":null,"showcase":false,"start_date":null,"id":"rh1p298tdvqn","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Atlanta (FTY)","created_at":"2020-04-14T16:03:15.618Z","updated_at":"2022-10-06T06:54:08.554Z","position":67,"description":null,"showcase":false,"start_date":null,"id":"dzb6x8yh81z9","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Ashburn (WDC)","created_at":"2020-04-14T16:03:13.603Z","updated_at":"2021-11-12T23:09:45.343Z","position":68,"description":null,"showcase":false,"start_date":null,"id":"r3f0ldyy97kp","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly New Delhi (DEL)","created_at":"2020-04-14T16:03:08.474Z","updated_at":"2022-06-07T19:22:46.039Z","position":71,"description":null,"showcase":false,"start_date":null,"id":"cqd1nl03kcbm","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Mumbai (BOM)","created_at":"2020-04-14T16:03:07.898Z","updated_at":"2022-09-02T08:00:06.317Z","position":72,"description":null,"showcase":false,"start_date":null,"id":"fd7tt5t12xxr","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Chennai (MAA)","created_at":"2020-04-14T16:03:07.354Z","updated_at":"2022-08-18T20:44:43.919Z","position":73,"description":null,"showcase":false,"start_date":null,"id":"fkgpwps42l3g","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Vienna (VIE)","created_at":"2020-04-14T16:03:02.910Z","updated_at":"2021-06-08T11:57:28.235Z","position":74,"description":null,"showcase":false,"start_date":null,"id":"kwzhngbhm8n2","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Stockholm (BMA)","created_at":"2020-04-14T16:03:02.215Z","updated_at":"2021-06-08T11:57:36.335Z","position":75,"description":null,"showcase":false,"start_date":null,"id":"bpcq80vt9cbk","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Paris (CDG)","created_at":"2020-04-14T16:03:00.934Z","updated_at":"2022-09-15T04:17:00.274Z","position":76,"description":null,"showcase":false,"start_date":null,"id":"fhhbf9ds6hwg","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Purging","created_at":"2022-06-03T17:44:51.108Z","updated_at":"2022-11-10T00:24:49.414Z","position":77,"description":null,"showcase":false,"start_date":null,"id":"gpxqtltnt10v","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Tokyo (NRT)","created_at":"2022-06-03T17:45:21.704Z","updated_at":"2022-06-03T17:49:20.658Z","position":78,"description":null,"showcase":false,"start_date":null,"id":"69tjdqjy3svx","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Singapore (QPG)","created_at":"2022-06-03T17:45:23.240Z","updated_at":"2022-09-08T14:33:40.873Z","position":79,"description":null,"showcase":false,"start_date":null,"id":"kqdvnljff0ws","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Seoul (ICN)","created_at":"2022-06-03T17:45:23.819Z","updated_at":"2022-06-03T17:49:30.016Z","position":80,"description":null,"showcase":false,"start_date":null,"id":"6q6ytq67vpsl","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Manila (MNL)","created_at":"2022-06-03T17:45:25.770Z","updated_at":"2022-06-03T17:49:33.842Z","position":81,"description":null,"showcase":false,"start_date":null,"id":"z1qjvrr9lm1f","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Kuala Lumpur (KUL)","created_at":"2022-06-03T17:45:26.402Z","updated_at":"2022-06-03T17:49:37.875Z","position":82,"description":null,"showcase":false,"start_date":null,"id":"2jxxnzf4d8tb","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Dubai (DXB)","created_at":"2022-06-03T17:45:27.855Z","updated_at":"2022-06-03T17:49:42.386Z","position":83,"description":null,"showcase":false,"start_date":null,"id":"830x7w1wqzhq","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Christchurch (CHC)","created_at":"2022-06-03T17:45:28.528Z","updated_at":"2022-06-03T17:49:46.696Z","position":84,"description":null,"showcase":false,"start_date":null,"id":"pn63bqm4lmgz","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Adelaide (ADL)","created_at":"2022-06-03T17:45:30.838Z","updated_at":"2022-06-06T20:30:37.993Z","position":85,"description":null,"showcase":false,"start_date":null,"id":"qd85tg3vjytl","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Ghana (ACC)","created_at":"2022-06-03T17:45:32.305Z","updated_at":"2022-06-03T17:49:55.130Z","position":86,"description":null,"showcase":false,"start_date":null,"id":"yn09bzj9h2yr","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly S膩o Paulo (CGH)","created_at":"2022-06-03T17:45:37.030Z","updated_at":"2022-06-03T17:49:59.364Z","position":87,"description":null,"showcase":false,"start_date":null,"id":"sl1yx5fms1gf","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Lima (LIM)","created_at":"2022-06-03T17:45:38.362Z","updated_at":"2022-10-16T16:02:27.694Z","position":88,"description":null,"showcase":false,"start_date":null,"id":"699mjnhdqdc1","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Fortaleza (FOR)","created_at":"2022-06-03T17:45:38.998Z","updated_at":"2022-06-03T17:50:07.518Z","position":89,"description":null,"showcase":false,"start_date":null,"id":"hzz6126jzx2s","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Seattle (BFI)","created_at":"2022-06-03T17:45:41.320Z","updated_at":"2022-10-07T08:00:31.015Z","position":90,"description":null,"showcase":false,"start_date":null,"id":"r2bzxrdk71f8","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Portland (PDX)","created_at":"2022-06-03T17:45:42.382Z","updated_at":"2022-06-03T17:50:15.384Z","position":91,"description":null,"showcase":false,"start_date":null,"id":"gq0n7776rr5t","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Phoenix (PHX)","created_at":"2022-06-03T17:45:42.927Z","updated_at":"2022-06-03T17:50:19.671Z","position":92,"description":null,"showcase":false,"start_date":null,"id":"3wd9p64jl50h","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Los Angeles (LGB - LAX/SNA)","created_at":"2022-06-03T17:45:45.518Z","updated_at":"2022-06-03T17:50:23.166Z","position":93,"description":null,"showcase":false,"start_date":null,"id":"80nrqrnp5b3j","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Honolulu (HNL)","created_at":"2022-06-03T17:45:47.811Z","updated_at":"2022-06-03T17:50:26.856Z","position":94,"description":null,"showcase":false,"start_date":null,"id":"0dnmvgp6rg8g","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Gainesville (GNV)","created_at":"2022-06-03T17:45:48.377Z","updated_at":"2022-06-03T17:50:31.154Z","position":95,"description":null,"showcase":false,"start_date":null,"id":"jl9snbs3pq0m","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Detroit (DTW)","created_at":"2022-06-03T17:45:49.382Z","updated_at":"2022-11-10T11:13:41.974Z","position":96,"description":null,"showcase":false,"start_date":null,"id":"3tbd3tcfz0st","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Columbus (LCK)","created_at":"2022-06-03T17:45:50.751Z","updated_at":"2022-06-03T17:50:38.856Z","position":97,"description":null,"showcase":false,"start_date":null,"id":"nxnc7vrg8676","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Calgary (YYC)","created_at":"2022-06-03T17:45:52.437Z","updated_at":"2022-06-03T17:50:42.521Z","position":98,"description":null,"showcase":false,"start_date":null,"id":"fv7rtxfx5c01","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Atlanta (ATL)","created_at":"2022-06-03T17:45:53.891Z","updated_at":"2022-07-15T02:58:51.353Z","position":99,"description":null,"showcase":false,"start_date":null,"id":"3gnv4ljw70hy","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Sydney (SYD)","created_at":"2022-06-03T17:45:56.157Z","updated_at":"2022-06-03T17:50:50.400Z","position":100,"description":null,"showcase":false,"start_date":null,"id":"dnnpzrtd9832","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Palo Alto (PAO)","created_at":"2022-06-03T17:45:57.124Z","updated_at":"2022-06-03T17:50:54.307Z","position":101,"description":null,"showcase":false,"start_date":null,"id":"zt7b4pjyp5xw","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Amsterdam (AMS)","created_at":"2022-06-03T17:46:02.160Z","updated_at":"2022-06-03T17:50:57.905Z","position":102,"description":null,"showcase":false,"start_date":null,"id":"y13qftsfj4n2","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Kolkata (CCU)","created_at":"2022-06-03T17:46:05.364Z","updated_at":"2022-06-19T22:11:34.638Z","position":103,"description":null,"showcase":false,"start_date":null,"id":"3m16bjl694hl","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Hyderabad (HYD)","created_at":"2022-06-03T17:46:06.082Z","updated_at":"2022-09-17T22:00:27.358Z","position":104,"description":null,"showcase":false,"start_date":null,"id":"m2vb18f8q108","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Palermo (PMO)","created_at":"2022-06-03T17:46:13.122Z","updated_at":"2022-11-10T03:19:40.715Z","position":105,"description":null,"showcase":false,"start_date":null,"id":"57zt6dsc5w32","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Sofia (SOF)","created_at":"2022-06-03T17:46:15.473Z","updated_at":"2022-06-03T17:51:13.525Z","position":106,"description":null,"showcase":false,"start_date":null,"id":"dfpbzq4jn2d3","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Rome (FCO)","created_at":"2022-06-03T17:46:16.365Z","updated_at":"2022-06-03T17:51:17.414Z","position":107,"description":null,"showcase":false,"start_date":null,"id":"z2h3q9wdv2rk","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Munich (MUC)","created_at":"2022-06-03T17:46:17.902Z","updated_at":"2022-06-03T17:51:21.284Z","position":108,"description":null,"showcase":false,"start_date":null,"id":"xd6nblf2dmsg","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Milan (LIN)","created_at":"2022-06-03T17:46:19.379Z","updated_at":"2022-09-16T19:33:40.757Z","position":109,"description":null,"showcase":false,"start_date":null,"id":"wflxj3tq5g4c","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Marseille (MRS)","created_at":"2022-06-03T17:46:20.136Z","updated_at":"2022-06-03T17:51:28.830Z","position":110,"description":null,"showcase":false,"start_date":null,"id":"w47z9ft3g7rm","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Lisbon (LIS)","created_at":"2022-06-03T17:46:23.154Z","updated_at":"2022-06-03T17:51:33.101Z","position":111,"description":null,"showcase":false,"start_date":null,"id":"smyn3xv84bc4","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Fastly Brussels (BRU)","created_at":"2022-06-03T17:46:25.221Z","updated_at":"2022-06-03T17:51:36.687Z","position":112,"description":null,"showcase":false,"start_date":null,"id":"fw7mm15m4mg0","group_id":"myn8gh5c4241","page_id":"2p66nmmycsj3","group":false,"only_show_if_degraded":false}],"months":[{"name":"February","year":2025,"starts_on":6,"days":28,"incidents":[]},{"name":"January","year":2025,"starts_on":3,"days":31,"incidents":[]},{"name":"December","year":2024,"starts_on":0,"days":31,"incidents":[{"code":"lnf8y0k9l7ms","name":"Infrastructure Outage","message":"This incident has been resolved.","impact":"critical","timestamp":"Dec \u003cvar data-var='date'\u003e13\u003c/var\u003e, \u003cvar data-var='time'\u003e13:44\u003c/var\u003e - \u003cvar data-var='time'\u003e15:09\u003c/var\u003e UTC"}]}],"show_component_filter":true,"show_uptime_calendar":true,"component_filter":null,"start_time":"2024-12-01T00:00:00Z","end_time":"2025-02-28T23:59:59Z"}"></div> <div class="page-footer border-color font-small"> <a href="/" aria-label="Back to current status"> <span class="current-status-arrow">←</span> Current Status </a> <span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=status.python.org&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span> </div> </div> </div> <script src="https://dka575ofm4ao0.cloudfront.net/assets/status_manifest-6a7ae3a8e2e1b1e1d9466495faa0851c3f5fff938743f6501c900aa2a8792e8c.js"></script> <div id="cpt-notification-container"></div> <!-- all of the content_for stuff --> <script src="https://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js"></script> <script type="text/javascript"> $(function() { SP.currentPage.registerSubscriptionForm('email'); SP.currentPage.registerSubscriptionForm('sms'); SP.currentPage.registerSubscriptionForm('webhook'); }); </script> <script src="https://dka575ofm4ao0.cloudfront.net/assets/status_common-c1b99d73ee7ab0fea796bd170723c1daac1381095a7dd7501a38ce6f333d86b3.js"></script> <script> /** INITIALIZATION **/ var recaptchaIds = {} // Unfortunately there's no unique selectors on the parent divs that recaptcha adds. The first unique selector // is the iframe rendered 2 levels deep. So this waits until the iframes are added to the page, then finds // the parent div and sets the z index so that it'll render above our modals & dropdowns from the start. function setZIndex(captchaCount, startTime) { // bail after 10s just in case so we don't do this forever if something whaky happens if (new Date() - startTime > 10000) { return; } var iframes = document.querySelectorAll('iframe[title="recaptcha challenge"]'); if (iframes.length != captchaCount) { setTimeout(function() { setZIndex(captchaCount, startTime); }, 500); } for (var i = 0; i < iframes.length; i++) { // incident subscribe modal is 1050, so this has to be above that iframes[i].parentElement.parentElement.style.zIndex = "1100"; } } function updateCaptchaIframeTitle(captchaCount, startTime, updates=0) { if (new Date() - startTime > 10000 || captchaCount === updates) { return; } var iframesWithTitle = document.querySelectorAll('iframe[title="recaptcha challenge expires in two minutes"]'); if (iframesWithTitle.length != captchaCount) { setTimeout(function() { updateCaptchaIframeTitle(captchaCount, startTime, iframesWithTitle.length + updates); }, 500); } for (var i = 0; i < iframesWithTitle.length; i++) { iframesWithTitle[i].title = "recaptcha"; } } function addIncidentCaptcha() { var incidentCaptcha = document.createElement('div'); incidentCaptcha.setAttribute('id', 'subscribe-incident-recaptcha'); incidentCaptcha.setAttribute('class', 'g-recaptcha'); incidentCaptcha.setAttribute('data-sitekey', '6LcZ-b0UAAAAAENi956aWzynTT2ZJ80dGU3F80Op'); incidentCaptcha.setAttribute('data-callback', 'submitIncidentSubscriberSuccess'); incidentCaptcha.setAttribute('data-error-callback', 'submitIncidentSubscriberError'); incidentCaptcha.setAttribute('data-size', 'invisible'); document.body.appendChild(incidentCaptcha); var incidentCode = document.createElement('input'); incidentCode.setAttribute('type', 'hidden'); incidentCode.setAttribute('id', 'submit_incident_code'); document.body.appendChild(incidentCode); } var onloadCallback = function() { // if there is an incident, then add incident captcha element if (document.getElementsByClassName('modal-open-incident-subscribe').length > 0) { addIncidentCaptcha(); } var captchas = document.getElementsByClassName("g-recaptcha"); for(var i = 0; i < captchas.length; i++) { var elId = captchas[i].id; recaptchaIds[elId] = grecaptcha.enterprise.render(elId); } setZIndex(captchas.length, new Date()); updateCaptchaIframeTitle(captchas.length, new Date()); } /** SUBSCRIBE DROPDOWN */ // callbacks for captcha success function submitNewSubscriber(type, error) { if (error) document.querySelector('#subscribe-form-' + type + ' #captcha_error').value = 'true'; document.getElementById('subscribe-form-' + type).dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIds['subscribe-btn-' + type]); } function submitNewEmailSubscriber(token) { submitNewSubscriber('email'); } function submitNewSmsSubscriber(token) { submitNewSubscriber('sms'); } function submitNewWebhookSubscriber(token) { submitNewSubscriber('webhook'); } function submitIncidentSubscriber(token, error) { var incidentCode = document.getElementById('submit_incident_code').value; var incidentForm = document.getElementById('subscribe-form-' + incidentCode); incidentForm.querySelector('input[name="captcha_error"]').value = error; incidentForm.querySelector('input[name="g-recaptcha-response"]').value = token; incidentForm.dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIds['subscribe-incident-recaptcha']); } function submitIncidentSubscriberSuccess(token) { submitIncidentSubscriber(token, 'false'); } // callbacks if we get captcha network errors function emailSubscriberCaptchaError(token) { submitNewSubscriber('email', true); } function smsSubscriberCaptchaError(token) { submitNewSubscriber('sms', true); } function webhookSubscriberCaptchaError(token) { submitNewSubscriber('webhook', true); } function submitIncidentSubscriberError(token) { submitIncidentSubscriber(token, 'true'); } // tracking clicks ['email', 'sms', 'webhook'].forEach(function(type) { var el = document.getElementById('subscribe-btn-' + type); el && el.addEventListener("click", function() { $.ajax({ type: "POST", url: "/subscriptions/track_attempt", data: { type: type } }) }) }) // form submission success callbacks $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success') { SP.currentPage.updatesDropdown.hide(); document.getElementById('email').value = ''; } }); $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success' && data.otp_flow !== true) { SP.currentPage.updatesDropdown.hide(); document.getElementById('phone-number').value = ''; } }); $('#subscribe-form-webhook').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success') { SP.currentPage.updatesDropdown.hide(); document.getElementById('endpoint-webhooks').value = ''; document.getElementById('email-webhooks').value = ''; } }); $('a.subscribe').on('click', function() { document.body.style.overflow = "hidden"; document.body.style.height = "100vh"; }); $('div.modal-open-incident-subscribe').on('hidden', function(){ document.body.style.overflow = ""; document.body.style.height = ""; }); function submitCaptchaIncidentSubscribe(event) { var incidentCode = event.target.id.split('-')[2]; event.preventDefault(); $.ajax({ type: "POST", url: "/subscriptions/track_attempt", data: { type: 'incident' } }) document.getElementById('submit_incident_code').value = incidentCode; grecaptcha.enterprise.execute(recaptchaIds['subscribe-incident-recaptcha']); } </script> <script src='https://www.recaptcha.net/recaptcha/enterprise.js?onload=onloadCallback&render=explicit' async defer></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/common-b45a59df4cdf9120c9c3.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/globals-ab1c4b5ca64732f9a6c8.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/runtime-58677388275192231eb9.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/status-e0d2a03be835b68a2eaa.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/components-6df27a1934a518952412.chunk.js"></script> <script> window.addEventListener('load', function () { const urlParams = new URLSearchParams(window.location.search); const messageToken = urlParams.get('slack_message_token'); const channelName = escape(urlParams.get('channel_name')); if(!!messageToken) { switch(messageToken) { case 'slack_auth_error': HRB.utils.notify('The Slack authorization attempt was unsuccessful. Try again.', {cssClass:'error'}); break; case 'subscribers_disabled_error': HRB.utils.notify('Slack subscriptions are not enabled on this page.', {cssClass:'error'}); break; case 'direct_message_channel_error': HRB.utils.notify('Subscriptions aren鈥檛 supported in direct messages. Try subscribing again and choose a channel instead.', {cssClass:'error'}); break case 'duplicate_error': HRB.utils.notify("You're already subscribed to get Slack notifications in that channel.", {cssClass:'error'}); break; case 'duplicate_private_channel_error': HRB.utils.notify(`You're already subscribed to get Slack notifications in #${channelName}. Invite the @Statuspage app to that channel to start getting status updates.`, {cssClass: 'error'}); break; case 'default_success': HRB.utils.notify("You're now subscribed to get Statuspage updates in Slack!", {cssClass:'success'}); break; case 'private_channel_success': HRB.utils.notify(`IMPORTANT: Invite the @Statuspage app to your Slack channel #${channelName} to start getting status updates.`, {cssClass:'success'}); break; } } }); </script> <!-- FOR FLASH NOTICES --> <!-- FOR ERROR --> <script> $(function() { var $link = $('<span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=status.python.org&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span>'); var setPoweredByStyles = function() { if (!$('.powered-by').length) { $link.appendTo($('.page-footer')) } $('.powered-by').attr('style', 'display: inline !important; visibility:visible !important; opacity: 1 !important; position:static !important; text-indent:0px !important; transform:scale(1) !important'); } setInterval(setPoweredByStyles, 1000); }); </script> </body> </html>