我试图在1GB数字海洋液滴内设置Django项目。该项目的一个关键功能是从.ods文件导入数据。
使用Django开发服务器manage.py runserver
测试项目时(已经在Droplet中)我可以导入相当多的行 - 最多20000没有问题,并且没有吃掉服务器的内存迭代ods文件的循环每100行休眠2秒。
但是当使用Gunicorn(与nginx一起使用)时,平均只处理20到30行。在此之后,我发现Gateway超时504代码错误。
我已经尝试过没有结果:
eventlet
并使用--worker-class eventlet
--workers 6
这是代码的简化版本的样子:
table = read(path_to_ods_file)
stop_every_rows = 100
rows_done = 0
stop_seconds = 1
for i in range(len(table)):
Profile.objects.create(
first_name=table[i][0],
last_name=table[i][0],
)
rows_done += 1
if rows_done >= stop_every_rows:
rows_done = 0
time.sleep(stop_seconds)
奇怪的是,大多数时候甚至都没有创建单个用户。
这就是我的gunicorn服务的样子:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=app_4
Group=www-data
WorkingDirectory=/home/app_4/backend
ExecStart=/home/app_4/backend/venv/bin/gunicorn --worker-class eventlet --access-logfile - --workers 3 --bind unix:/home/app_4/backend/project/backend$
[Install]
WantedBy=multi-user.target
答案 0 :(得分:0)
自从您尝试过gunicorn
。然后,我建议调整Nginx
。
通过this添加您的conf
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;