我正在尝试运行一个简单的 NGnix + Gunicorn + Django + MySQL(AWS 上的 RDS)堆栈,但显然某些 MySQL 查询发生的任何事情都会减慢并锁定服务。
为了防止这种情况,我开始使用 eventlet(它也可以与 Celery 配合使用),但修补 MySQLdb 似乎会导致性能损失(2-3x 响应时间)和不稳定(可能会在重启期间锁定所有数据库连接几秒钟)。
具有相同逻辑的 Celery + eventlet 似乎工作得很好,那我错过了什么?
try:
import eventlet
worker_class = 'egg:gunicorn#eventlet'
worker_connections = 1000
def do_post_fork(server, worker):
eventlet.monkey_patch()
eventlet.monkey_patch(MySQLdb=True)
post_fork = do_post_fork
except ImportError as e:
import logging
logging.exception(e)
pass
谢谢!