Найти - Пользователи
Полная версия: django, celery, rabbitmq, amqplib, python socket
Начало » Django » django, celery, rabbitmq, amqplib, python socket
1
LestatCheb
Здравствуйте, кто-нибудь использует в работе Celery + RabbitMQ?

начал профилировать, и увидел что больше всех теперь уходит время не на postgresql,
а на транспорт amqp-серверу:

         758457 function calls (654850 primitive calls) in 4.976 seconds

Ordered by: internal time, call count

ncalls tottime percall cumtime percall filename:lineno(function)
588 2.525 0.004 2.525 0.004 /usr/lib/python2.7/site-packages/amqplib/client_0_8/transport.py:194(_read)
231 0.605 0.003 0.609 0.003 /usr/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py:42(execute)
13024 0.161 0.000 0.161 0.000 /usr/lib/python2.7/site-packages/jinja2/lexer.py:548(tokeniter)
......
......
собственно в amqplib все это дело тормозится на питоновском socket:

    def _read(self, n):
"""
Read exactly n bytes from the socket

"""
while len(self._read_buffer) < n:
s = self.sock.recv(65536)
if not s:
raise IOError('Socket closed')
self._read_buffer += s

result = self._read_buffer[:n]
self._read_buffer = self._read_buffer[n:]

return result
вообще странно что асинхронные задачи celery
такие как

from celery.decorators import task

@task
def test_task():
return 1+1
и вызов их

    test_task.delay()
приводят к такой задержке…

или тут можно как-нибудь питоновский socket пропатчить для non-blocking режима?


спасибо!
Zubchick
я использую, но мне это не критично :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB