我有一个网页,它向django服务器发送多个ajax get请求。 服务器为每个获取的请求执行一些Internet爬网,并在完成后向客户端返回响应。 似乎服务器一个接一个地回复请求。 我正在考虑将每个请求发送给Celery工作者以使服务器的响应异步,但我不确定它是否能解决问题。
另外我在heroku上使用django并且不确定如何在heroku上将芹菜与django结合使用。
答案 0 :(得分:1)
Heroku Django教程应用使用gunicorn作为服务器,你可以在这里看到:
https://github.com/heroku/python-getting-started/blob/master/Procfile
教程应用程序中没有特殊的gunicorn配置,因此您使用gunicorn默认设置运行。你可以看到他们在这里: http://docs.gunicorn.org/en/stable/settings.html#worker-processes
您需要注意的是,这意味着您拥有sync
类型的单个工作进程(即无greenlets魔法,无法在单个Python进程中实现并发)
它确实说你可以通过设置WEB_CONCURRENCY
环境变量来扩展gunicorn以使用多个进程(仍在单个Heroku dyno上),在Heroku上可以使用cli工具从本地shell轻松完成:
$ heroku config:set WEB_CONCURRENCY=4
Gunicorn docs建议将此设置为"一般为2-4 x $(NUM_CORES)
范围内的正整数。"你的基本Heroku dyno将是一个核心。