大家怎么解决推送后大量用户涌入的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
document.addEventListener('DOMContentLoaded', function() { // Function to escape HTML entities function escapeHtml(text) { if (!text) return ''; var div = document.createElement('div'); div.textCOntent= text; return div.innerHTML; } // Function to render campaign based on display format function renderCampaign(campaign) { let html = ''; let displayFormat = campaign.display_format || 'text-only'; let title = escapeHtml(campaign.title); let description = escapeHtml(campaign.description); let callToAction = escapeHtml(campaign.call_to_action); let link = escapeHtml(campaign.link); // Check if required image URL is available for the display format, fallback to text-only if not if (displayFormat === 'small-with-description' && !campaign.img_small_url) { displayFormat = 'text-only'; } else if (displayFormat === 'banner-only' && !campaign.img_banner_url) { displayFormat = 'text-only'; } else if ((displayFormat === 'big-only' || displayFormat === 'big-with-description' || displayFormat === 'big-with-title-description-button') && !campaign.img_big_url) { displayFormat = 'text-only'; } html = `
${title}
`; switch(displayFormat) { case 'text-only': html += `
${description}
`; break; case 'small-with-description': html += `
${campaign.img_small_cid ? `
` : ''}
${description}
`; break; case 'banner-only': html += `
`; break; case 'big-only': html += `
`; break; case 'big-with-description': html += `
`; html += `
${description}
`; break; case 'big-with-title-description-button': html += `
`; html += `
${description}
`; html += ``; break; default: html += `
${description}
`; } html += `` return html; } // Load campaign from emitter var xhr = new XMLHttpRequest(); xhr.open('GET', '/pro/emitter', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.Onreadystatechange= function() { if (xhr.readyState === 4) { if (xhr.status === 200) { try { var campaign = JSON.parse(xhr.responseText); if (campaign && campaign.id) { var html = renderCampaign(campaign); document.getElementById('pro-campaign-container').innerHTML = html; } else { // No campaign to display, hide the container document.getElementById('pro-campaign-container').style.display = 'none'; } } catch (e) { // Parse error, hide the container document.getElementById('pro-campaign-container').style.display = 'none'; console.log('Error parsing campaign data: ' + e.message); } } else { // HTTP error, hide the container document.getElementById('pro-campaign-container').style.display = 'none'; console.log('Error loading campaign: HTTP ' + xhr.status); } } }; xhr.send(); });
BeanYoung

大家怎么解决推送后大量用户涌入的问题

  •  
  •   BeanYoung Mar 26, 2014 4723 views
    This topic created in 4417 days ago, the information mentioned may be changed or developed.
    现在应用大概有150w用户,日活10w+,两台服务器,一台api,一台数据库。最近几次全员推送,每次都api超时,处于无法全员推送的状态。

    我们使用到的技术关键字包括python, thirft, MySQL, peewee, redis, flask

    我先说说我的想法。分库分表,缓存,无提示声音推送。

    大家都怎么处理这种app全用户推送问题的?有啥思路和建议?