我正在使用django,celery和rabbitmq来运行2个周期性任务和6个临时任务。所有任务都位于(app)/tasks.py中。定期和临时任务分为两个单独的队列(high_priority_queue和low_priority_queue)。
我为节拍和两个队列设置了三个管理员命令:
$ ./manage.py celeryd --concurrency=1 --verbosity=3 --loglevel=INFO --beat
$ ./manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
$ ./manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
tasks.py文件大约是686行的python,主要是做网络和数据库工作。有15行导入和大约14个Django模型。导入的一个导入行中的模型类。
在我的ubuntu服务器上,我可以看到每个线程在41-48MB的RES内存之间使用。我觉得这很多,我想知道是否有办法将每个线程的RES内存使用率降低。我可以做一个代码组织技巧吗?我应该在它们用于每项任务之前导入模型吗?
以下是摘录:
VIRT RES SHR %MEM COMMAND 18701 mark 20 0 253m 61m 1396 S 26 8.3 0:10.90 /home/mark/.virtualenvs/searchrank.is/bin/python /home/mark/searchrank.is/src/manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
320m 59m 1400 8.1 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
317m 59m 1360 8.0 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
303m 45m 1172 6.2 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
300m 43m 1056 5.9 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
300m 43m 348 5.9 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
305m 30m 0 4.1 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
305m 29m 0 4.0 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
306m 27m 8 3.7 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
305m 25m 16 3.5 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
304m 24m 0 3.4 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
304m 24m 12 3.4 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
305m 19m 4 2.7 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
230m 19m 164 2.6 .../manage.py celeryd --concurrency=1 --verbosity=3 --loglevel=INFO --beat
306m 18m 0 2.5 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
303m 16m 4 2.3 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue
299m 15m 1020 2.2 .../manage.py celeryd --concurrency=1 --verbosity=3 --loglevel=INFO --beat