假设我在我的 Procfile 中声明了以下进程
web: newrelic-admin run-program python manage.py run_gunicorn -b 0.0.0.0:$PORT -w 9 -k gevent --max-requests 250 --preload --timeout 240
scheduler: python manage.py celery worker -B -E --maxtasksperchild=1000
worker: python manage.py celery worker -E --maxtasksperchild=1000
celerymon: python manage.py celerymon -B 0.0.0.0 -P $PORT
我基本上必须运行我的主要 Web 进程的一些测功机。运行调度程序。运行几个工人。监控芹菜。单独使用托管的 AMQP 代理。
我已经尝试过在单个测功机上运行多个进程的替代方法,但它似乎不能可靠地工作,而且无论如何我不想在生产中使用。
我发现运行所有这些的成本有点令人望而却步,尤其是当我认为我可以在单个测功机上组合一些进程时。也许将调度程序与监控结合起来,或者将调度程序和工作程序一起运行。
除此之外,Heroku 仅公开了 80 和 443 个端口,并且无法在同一个测功机上的多个端口上运行服务。
什么是优化流程和测功机使用的好策略?
或者,如果运行 celerycam 为您的成本增加了另一个测功机,那么如何在 heroku 上监控 celery 任务?