Celery: рдирд┐рд░рдВрддрд░ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЬреВрди 2018  ┬╖  129рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: celery/celery

рд╕реЗрд▓реЗрд░реА рдХреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╣реИред
рдпрд╣ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рд╡рд╛рд▓реА рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рд╣рд░ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЕрдЪрд╛рдирдХ рд╣реЛрддрд╛ рд╣реИред
рдЬрдм рддрдХ рдЖрдк рдЕрдЬрд╡рд╛рдЗрди рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рджрд╕рд┐рдпреЛрдВ рдШрдВрдЯреЛрдВ рдореЗрдВ рд╕рд░реНрд╡рд░ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕реЗрд▓реЗрд░реА 4.1 рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕реЗрд▓реЗрд░реА 4.2 рдореЗрдВ рднреА рд╣реЛрддреА рд╣реИред
рдЕрдЬрд╡рд╛рдЗрди Ubuntu 16 рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИ рдФрд░ рджрд▓рд╛рд▓ RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

memory

Prefork Workers Pool RabbitMQ Broker Bug Report Critical Needs Testcase тЬШ Needs Verification тЬШ memory leak

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛?

рд╕рднреА 129 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдк рдХреИрдирд╡рд╛рд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╢рд╛рдпрдж # 4839 рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рдВрдЧрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж рдЬрд╛рд░реНрдЬрдкрд╛рд░реНрдХрд┐рд╕ред

рдореИрдВ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рдореИрдВ рд╕рд┐рдВрдЧрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░реАрдлреЙрд░реНрдХ рдХреЙрдирдХреНрдпреЛрд░ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рд╡реГрджреНрдзрд┐ рджрд░ рдХрд╛рдлреА рд░реИрдЦрд┐рдХ, рдХрд╛рдлреА рдЕрдЬреАрдм рд▓рдЧрддреА рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рд╢реНрд░рдорд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рдкреВрд░реА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рд╣рд╛рдБред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

/xxxxxxxx/bin/celery worker --app=xxxxxxxx --loglevel=INFO --pidfile=/var/run/xxxxxxxx.pid

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рджреЛрдиреЛрдВ рдореЗрдВ рд╣реЛ рд░рд╣реА рд╣реИред
рдореИрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореЗрдореЛрд░реА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред
рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдХреБрдЫ рдХрд╣реЗрдВред

рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рджреЗрдЦреА рдЧрдИ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рд╡рд┐рд╡рд░рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдорд╛рдорд▓рд╛ рдерд╛, рдореЗрдореЛрд░реА рд░рд┐рд╕рд╛рд╡ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдЕрдЧрд▓рд╛ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдерд╛ред

[2018-02-24 07:50:52,953: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
File "/xxxxxxxx/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", line 320, in start
blueprint.start(self)
File "/xxxxxxxx/lib/python3.5/site-packages/celery/bootsteps.py", line 119, in start
step.start(parent)
File "/xxxxxxxx/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", line 596, in start
c.loop(*c.loop_args())
File "/xxxxxxxx/lib/python3.5/site-packages/celery/worker/loops.py", line 88, in asynloop
next(loop)
File "/xxxxxxxx/lib/python3.5/site-packages/kombu/async/hub.py", line 293, in create_loop
poll_timeout = fire_timers(propagate=propagate) if scheduled else 1
File "/xxxxxxxx/lib/python3.5/site-packages/kombu/async/hub.py", line 136, in fire_timers
entry()
File "/xxxxxxxx/lib/python3.5/site-packages/kombu/async/timer.py", line 68, in __call__
return self.fun(*self.args, **self.kwargs)
File "/xxxxxxxx/lib/python3.5/site-packages/kombu/async/timer.py", line 127, in _reschedules
return fun(*args, **kwargs)
File "/xxxxxxxx/lib/python3.5/site-packages/kombu/connection.py", line 290, in heartbeat_check
return self.transport.heartbeat_check(self.connection, rate=rate)
File "/xxxxxxxx/lib/python3.5/site-packages/kombu/transport/pyamqp.py", line 149, in heartbeat_check
return connection.heartbeat_tick(rate=rate)
File "/xxxxxxxx/lib/python3.5/site-packages/amqp/connection.py", line 696, in heartbeat_tick
self.send_heartbeat()
File "/xxxxxxxx/lib/python3.5/site-packages/amqp/connection.py", line 647, in send_heartbeat
self.frame_writer(8, 0, None, None, None)
File "/xxxxxxxx/lib/python3.5/site-packages/amqp/method_framing.py", line 166, in write_frame
write(view[:offset])
File "/xxxxxxxx/lib/python3.5/site-packages/amqp/transport.py", line 258, in write
self._write(s)
ConnectionResetError: [Errno 104] Connection reset by peer
[2018-02-24 08:49:12,016: INFO/MainProcess] Connected to amqp://xxxxxxxx:**@xxx.xxx.xxx.xxx:5672/xxxxxxxx

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдм рд╣реБрдЖ рдЬрдм RabbitMQ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@marvelph рддреЛ рдпрд╣ RabbitMQ рдХреЗ

рд╣рд╛рдБред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордВрдЬрд╕реНрдп рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ ... рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рдПрдХ рдпрд╛рджрдЧрд╛рд░ рд▓реАрдХ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрдЬрд╡рд╛рдЗрди 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ ubuntu 16, рдЕрдЬрд╡рд╛рдЗрди 4.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдбреЙрдХрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ред

рдореЗрдореЛрд░реА рд▓реАрдХ рдореЗрдирдкреНрд░реЛрд╕реЗрд╕ рдирд╣реАрдВ рдлреЛрд░реНрдХрдкреВрд▓рд╡реЙрдХрд░ рдХреЗ рд╕рд╛рде рд╣реИред ForkPoolWorker рдХреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрдирдкреНрд░реЛрд╕реЗрд╕ рдХреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдкрд╛рдВрдЪ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ 0.1MB рдореЗрдорд░реА рд▓реАрдХ рд╣реБрдИ рд╣реИред рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдПрдХ рдпрд╛ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рджред

рдореИрдВрдиреЗ рд░рдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gdb рдФрд░ pyrasite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ gc.collect() , рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдореИрдВрдиреЗ рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА, consumer: Connection to broker lost. Trying to re-establish the connection... рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣ рд╕рдордп рд╣реИ рдЬрдм рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрдХреЗрдд? рдзрдиреНрдпрд╡рд╛рджред

рдЪреВрдВрдХрд┐ @marvelph рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЦрд░рдЧреЛрд╢ рдХреЗ рдкреБрди: рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдЦрд░рдЧреЛрд╢ рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреБрди: рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рдж рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ, рдирд┐рдореНрди рд▓реЙрдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ https://github.com/celery/kombu/issues/843 рдореБрджреНрджреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рдХреЗ рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рд╣реИред

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдореБрджреНрджрд╛ wtih rabbitmq рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

[2018-06-25 02:43:33,456: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", line 316, in start
    blueprint.start(self)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", line 592, in start
    c.loop(*c.loop_args())
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/loops.py", line 91, in asynloop
    next(loop)
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/asynchronous/hub.py", line 354, in create_loop
    cb(*cbargs)
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/transport/base.py", line 236, in on_readable
    reader(loop)
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/transport/base.py", line 218, in _read
    drain_events(timeout=0)
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/connection.py", line 491, in drain_events
    while not self.blocking_read(timeout):
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/connection.py", line 496, in blocking_read
    frame = self.transport.read_frame()
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/transport.py", line 243, in read_frame
    frame_header = read(7, True)
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/transport.py", line 418, in _read
    s = recv(n - len(rbuf))
ConnectionResetError: [Errno 104] Connection reset by peer
[2018-06-25 02:43:33,497: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 2.00 seconds...

[2018-06-25 02:43:35,526: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 4.00 seconds...

[2018-06-25 02:43:39,560: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 6.00 seconds...

[2018-06-25 02:43:45,599: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 8.00 seconds...

[2018-06-25 02:43:53,639: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 10.00 seconds...

[2018-06-25 02:44:03,680: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 12.00 seconds...

[2018-06-25 02:44:15,743: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 14.00 seconds...

[2018-06-25 02:44:29,790: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 16.00 seconds...

[2018-06-25 02:44:45,839: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 18.00 seconds...

[2018-06-25 02:45:03,890: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 20.00 seconds...

[2018-06-25 02:45:23,943: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 22.00 seconds...

[2018-06-25 02:45:46,002: ERROR/MainProcess] consumer: Cannot connect to amqp://***:**@***:***/***: [Errno 111] Connection refused.
Trying again in 24.00 seconds...

[2018-06-25 02:46:10,109: INFO/MainProcess] Connected to amqp://***:**@***:***/***
[2018-06-25 02:46:10,212: INFO/MainProcess] mingle: searching for neighbors
[2018-06-25 02:46:10,291: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", line 316, in start
    blueprint.start(self)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/consumer/mingle.py", line 40, in start
    self.sync(c)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/consumer/mingle.py", line 44, in sync
    replies = self.send_hello(c)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/worker/consumer/mingle.py", line 57, in send_hello
    replies = inspect.hello(c.hostname, our_revoked._data) or {}
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/app/control.py", line 132, in hello
    return self._request('hello', from_node=from_node, revoked=revoked)
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/app/control.py", line 84, in _request
    timeout=self.timeout, reply=True,
  File "/app/.heroku/python/lib/python3.6/site-packages/celery/app/control.py", line 439, in broadcast
    limit, callback, channel=channel,
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/pidbox.py", line 315, in _broadcast
    serializer=serializer)
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/pidbox.py", line 290, in _publish
    serializer=serializer,
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py", line 203, in _publish
    mandatory=mandatory, immediate=immediate,
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/channel.py", line 1732, in _basic_publish
    (0, exchange, routing_key, mandatory, immediate), msg
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/abstract_channel.py", line 50, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/method_framing.py", line 166, in write_frame
    write(view[:offset])
  File "/app/.heroku/python/lib/python3.6/site-packages/amqp/transport.py", line 275, in write
    self._write(s)
ConnectionResetError: [Errno 104] Connection reset by peer
[2018-06-25 02:46:10,375: INFO/MainProcess] Connected to amqp://***:**@***:***/***
[2018-06-25 02:46:10,526: INFO/MainProcess] mingle: searching for neighbors
[2018-06-25 02:46:11,764: INFO/MainProcess] mingle: all alone

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА, рдореБрдЭреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд╕рдордп рдкреБрди: рд╕рдВрдпреЛрдЬрди рдХрд╛ рдПрдХ рд▓реЙрдЧ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдПрдХ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рднреА рдерд╛ рдЬрд╣рд╛рдБ рдПрдХ рдореЗрдореЛрд░реА рд▓реАрдХ рдЙрд╕ рд╕рдордп рд╢реБрд░реВ рд╣реБрдИ рдЬрдм рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рд╣реБрдИ рдереАред
рдореИрдВ jxlton рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдореИрдВ рд╕реЗрд▓реЗрд░реА 3.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ
screenshot 2018-06-25 11 09 22
рд╣рд░ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ
рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдкреБрди: рд╕рдВрдпреЛрдЬрди рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рдЪреВрдБрдХрд┐ рдореИрдВрдиреЗ рд▓реЙрдЧ рдПрдВрдЯреНрд░реАрдЬрд╝ рдХреЛ рд╕рдордп рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдЬрдм рдореЗрдореЛрд░реА рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝рдиреЗ рд▓рдЧрддреА рд╣реИ
рдореЗрд░рд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ ubuntu 17 рд╣реИ, 1 рд╕рд░реНрд╡рд░ - 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ 3 рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде; рдЦрд░рдЧреЛрд╢ рдФрд░ рдмреИрдХреЗрдВрдб рдкрд░ рд░реЗрдбрд┐рд╕; рд╕рднреА рдкреИрдХреЗрдЬ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ

@marvelph @ dmitry-

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рд╣реИ

рдЖрдпрд╛рдд = ('app.tasks')
result_persistent = рд╕рддреНрдп
task_ignore_result = рдЧрд▓рдд
task_acks_late = рд╕рддреНрдп
worker_concurrency = 3
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_рдкрд░рд┐рд╡рд░реНрддрди_рдореВрд▓рд┐рдкреА = рек
enable_utc = рд╕рд╣реА
рд╕рдордпрдХреНрд╖реЗрддреНрд░ = 'рдпреВрд░реЛрдк / рдорд╛рд╕реНрдХреЛ'
рдмреНрд░реЛрдХрд░_рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ_рдУрдкреНрд╢рдВрд╕ = {'рджреГрд╢реНрдпрддрд╛_ рдЯрд╛рдЗрдордЖрдЙрдЯ': 3600, 'рдХрдиреНрдлрд░реНрдо_рдкреНрд░рдХрд╛рд╢': рд╕рдЪ, 'рдлреИрдирдЖрдЙрдЯ_рдкрд░рд┐рд╡рд░реНрддрди': рд╕рдЪ, 'рдлреИрдирдЖрдЙрдЯ_рдкрд╛рд░реНрдЯрди': рд╕рдЪ}

screenshot 2018-06-25 11 35 17
рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдирдпрд╛ рддреИрдирд╛рдд рдиреЛрдб рд╣реИ; рдЗрд╕реЗ 06/21 18-50 рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; 6/23 рдХреЛ 05-00 рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдмрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрдВрдд рдореЗрдВ 6/23 рдХреЛ 23-00 рдХреЗ рдЖрд╕рдкрд╛рд╕ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рдХрд░ рджрд┐рдпрд╛

рдХрд╛рд░реНрдп рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рд╡рд╣рд╛рдБ рдХреЛрдИ рд╕реБрдкрд░рд▓реЙрдЬрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрд╕реНрдерд╛рдпреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдкреВрд░реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реЛрдЧрд╛ рддреЛ рдореИрдВ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдкрд░ рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛

рдпреБрдкреАрдбреА
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рдХреБрдЫ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЧреНрд░рд╛рдлрд╝ рдкрд░ рд╕реНрдкрд╛рдЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдордп рдЬрдм рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШреВрд░ рд░рд╣реА рдереА рдХреЛрдИ рдЙрддреНрдкрд╛рджрди рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдп рдирд╣реАрдВ рдереЗ

@marvelph @ dmitry- kostin @jxltom рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рдкрд╛рдпрдерди 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд╕рд╕реНрдореЙрд▓реЙрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдорди рдХрд░реЗрдВрдЧреЗ? рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдирд┐рд╢рд╛рди рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдк рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ tracemalloc рд╕рдХреНрд╖рдо рдФрд░ рд▓реЙрдЧ рдРрд╕реЗ рд╢реАрд░реНрд╖ 10 рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдБрдХрдбрд╝реЗ, рдЬреИрд╕реЗ 5 рдорд┐рдирдЯ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорддрд▓рдм @georgepsarakis?

@jxltom рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдХреЗ рдЙрд╕ рднрд╛рдЧ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

@georgepsarakis I'v рдиреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gdb рдФрд░ https://github.com/lmacken/pyrasite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдмрдЧ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдореЗрдо рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ 10 рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдореИрдВ resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024 рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдзреАрд░реЗ-рдзреАрд░реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред

>>> import tracemalloc
>>> 
>>> tracemalloc.start()
>>> snapshot = tracemalloc.take_snapshot()
>>> top_stats = snapshot.statistics('lineno')
>>> for stat in top_stats[:10]:
...     print(stat)
... 
/app/.heroku/python/lib/python3.6/site-packages/kombu/utils/eventio.py:84: size=12.0 KiB, count=1, average=12.0 KiB
/app/.heroku/python/lib/python3.6/site-packages/celery/worker/heartbeat.py:47: size=3520 B, count=8, average=440 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/method_framing.py:166: size=3264 B, count=12, average=272 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:142: size=3060 B, count=10, average=306 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:157: size=2912 B, count=8, average=364 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/abstract_channel.py:50: size=2912 B, count=8, average=364 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py:181: size=2816 B, count=12, average=235 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py:203: size=2816 B, count=8, average=352 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:199: size=2672 B, count=6, average=445 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/channel.py:1734: size=2592 B, count=8, average=324 B

рдпрд╣рд╛рдВ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рджреЛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИред

>>> snapshot2 = tracemalloc.take_snapshot()
>>> top_stats = snapshot2.compare_to(snapshot, 'lineno')
>>> print("[ Top 10 differences ]")
[ Top 10 differences ]

>>> for stat in top_stats[:10]:
...     print(stat)
... 
/app/.heroku/python/lib/python3.6/site-packages/celery/worker/heartbeat.py:47: size=220 KiB (+216 KiB), count=513 (+505), average=439 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:142: size=211 KiB (+208 KiB), count=758 (+748), average=285 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/method_framing.py:166: size=210 KiB (+206 KiB), count=789 (+777), average=272 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:157: size=190 KiB (+187 KiB), count=530 (+522), average=366 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/abstract_channel.py:50: size=186 KiB (+183 KiB), count=524 (+516), average=363 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:199: size=185 KiB (+182 KiB), count=490 (+484), average=386 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py:203: size=182 KiB (+179 KiB), count=528 (+520), average=353 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py:181: size=179 KiB (+176 KiB), count=786 (+774), average=233 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/channel.py:1734: size=165 KiB (+163 KiB), count=525 (+517), average=323 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/async/hub.py:293: size=157 KiB (+155 KiB), count=255 (+251), average=632 B

рдпрд╣ рдХреИрд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡? рдореБрдЭреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

@georgepsarakis

рдореИрдВ рдкреНрд░рдЬрдирди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдордп рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдпрд╣ рд╕реЗрд▓реЗрд░реА рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╣реИред

BROKER_URL = [
    'amqp://xxxxxxxx:[email protected]:5672/zzzzzzzz'
]
BROKER_TRANSPORT_OPTIONS = {}

рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдкрд╛рд╕ рдирд┐рдореНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВред

CELERYBEAT_SCHEDULE = {
    'aaaaaaaa_bbbbbbbb': {
        'task': 'aaaa.bbbbbbbb_cccccccc',
        'schedule': celery.schedules.crontab(minute=0),
    },
    'dddddddd_eeeeeeee': {
        'task': 'dddd.eeeeeeee_ffffffff',
        'schedule': celery.schedules.crontab(minute=0),
    },
}

рдИрд╕реА 2 рдкрд░, рдореИрдВ рдЗрд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@georgepsarakis
рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЛ рд╕рд╣рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрджреНрджреЗрджрд╛рд░ рдЕрдЬрд╡рд╛рдЗрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

@jxltom I рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП 5 рдорд┐рдирдЯ рдХреЗ рд╕рд╛рде рдЯреНрд░реЗрд╕рдореЙрд▓реЛрдХ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реИ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ 5 рдиреЛрдбреНрд╕ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 3 рдореЗрдВ рдкрд┐рдЫрд▓реЗ 4 рджрд┐рдиреЛрдВ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА, рдФрд░ 2 рдиреЗ рдЗрд╕ рдмрд╛рд░ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ редред
рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЯреЙрдЧрд▓ рд╣реИ рдЬреЛ рд╕реНрд╡рд┐рдЪ рдСрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдореЗрдореЛрд░реА рдмрдврд╝рдиреЗ рд▓рдЧрддреА рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╕реНрд╡рд┐рдЪ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд▓рдЧрддреА

рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рд░рдирд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдореЛрдВ рдореЗрдВ рднреА рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдШрдЯрдирд╛ рдХреА рдЖрд╡реГрддреНрддрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрд▓реЗрд░реА 4.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рддреАрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдПрдХ рдореЗрдореЛрд░реА рд░рд┐рд╕рд╛рд╡ рд╣реБрдЖ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
рдЬрд┐рд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реИ рд╡рд╣ рдкрд╛рдпрдерди 3.5.x рд╣реИ, рдФрд░ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рд▓реАрдХ рд╡рд╛рд▓рд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд╛рдпрдерди 2.7.x рд╣реИред

@ dmitry-kostin рдЕрдиреНрдп рджреЛ рд╕рд╛рдорд╛рдиреНрдп рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ, рдХреНрдпрд╛ рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдЦрд░рдЧреЛрд╢ рдХрд╛ рджрд▓рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реА рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ рдХрд┐ рдпрд╣ рдЦрд░рдЧреЛрд╢ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЙрд╕реА рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдирдпрд╛ рдиреЛрдб рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЕрдм рддрдХ, 24 рдШрдВрдЯреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдиреЛрдб рдореЗрдВ рдХреЛрдИ рдореЗрдореЛрд░реА рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкреЛрд╕реНрдЯ рдХрд░реВрдБрдЧрд╛ рдЕрдЧрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреА рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛ рдЬрд╛рдП

@marvelph рддреЛ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рд▓реАрдХ рд╡рд╛рд▓реЗ рддреАрди рд╕рд┐рд╕реНрдЯрдо python3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрдмрдХрд┐ рдЬреЛ рдареАрдХ рд╣реИ рд╡рд╣ python2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?

@jxltom рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рд╛рдБ рд╡реЗ рдЕрдЬрдЧрд░ 3 рдкрд░ рд╣реИрдВ рдФрд░ рджрд▓рд╛рд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд▓рд╛рд▓ рдФрд░ рд░реЗрдбрд┐рд╕
рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛, рдЕрдЧрд░ рдпрд╣ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рд╕рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рддреЛ рдореИрдВ рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рджреВрдВрдЧрд╛ рдЬреЛ рдЗрд╕ рдмрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ

@jxltom
рд╣рд╛рдБред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдЕрдЬрдЧрд░ 2 рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред

рдореИрдВрдиреЗ рдПрдХ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рднреАрддрд░ рдЯреНрд░реЗрд╕рдореЗрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ред

resource рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рд╛рд░рдВрдн рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ 3.5 рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж 146.58MB , рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ 224.21MB ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдиреИрдкрд╢реЙрдЯ рдЕрдВрддрд░ tracemalloc рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

>>> snapshot2 = tracemalloc.take_snapshot(); top_stats = snapshot2.compare_to(snapshot, 'lineno')
>>> for stat in top_stats[:10]:
...     print(stat)
... 
/app/.heroku/python/lib/python3.6/site-packages/celery/worker/heartbeat.py:47: size=3619 KiB (+3614 KiB), count=8436 (+8426), average=439 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:142: size=3470 KiB (+3466 KiB), count=12529 (+12514), average=284 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/method_framing.py:166: size=3418 KiB (+3414 KiB), count=12920 (+12905), average=271 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:157: size=3149 KiB (+3145 KiB), count=8762 (+8752), average=368 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/abstract_channel.py:50: size=3099 KiB (+3096 KiB), count=8685 (+8676), average=365 B
/app/.heroku/python/lib/python3.6/site-packages/celery/events/dispatcher.py:199: size=3077 KiB (+3074 KiB), count=8354 (+8345), average=377 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py:203: size=3020 KiB (+3017 KiB), count=8723 (+8713), average=355 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/messaging.py:181: size=2962 KiB (+2959 KiB), count=12952 (+12937), average=234 B
/app/.heroku/python/lib/python3.6/site-packages/amqp/channel.py:1734: size=2722 KiB (+2718 KiB), count=8623 (+8613), average=323 B
/app/.heroku/python/lib/python3.6/site-packages/kombu/async/hub.py:293: size=2588 KiB (+2585 KiB), count=4193 (+4188), average=632 B

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рднреА рдлрд╝рд╛рдЗрд▓ рд▓реАрдХ рдирд╣реАрдВ рд╣реИ?

рдореИрдВрдиреЗ gc рдЖрдпрд╛рдд рдХрд┐рдпрд╛, рдФрд░ gc.collect() 0 ...

@georgepsarakis рдореИрдВ рдЗрд╕реЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдореБрдЭреЗ рдПрдХреНрд╕реЗрд╕ рдХреНрд░реЗрдбрд┐рдЯ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛

рдЕрджреНрдпрддрди: рдореИрдВрдиреЗ рдмреНрд░реЛрдХрд░ рдХреЛ рдЦрд░рдЧреЛрд╢ рд╕реЗ рд▓реЗрдХрд░ рд░реЗрдбрд┐рд╕ рддрдХ рдмреНрд░реЛрдХрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмреНрд░реЛрдХрд░ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдбреЙрдХрдЯрд░ / рдХреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рд╣реА рд░рдЦ рд╕рдХреЗрдВред рдФрд░ рдпрд╣ 4 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдирд╣реАрдВ рд╣реИ ред

рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЦрд░рдЧреЛрд╢ рджрд▓рд╛рд▓ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдХреГрдкрдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдпрд╣рд╛рдБ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/celery/celery/issues/2927#issuecomment -171455414

рдпрд╣ рдкреНрд░рдгрд╛рд▓реА 20 рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЪрд▓рд╛ рд░рд╣реА рд╣реИред
рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд▓ рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред
memoryleak

рдЕрдЧрд░ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рддреЛ рдпрд╣ рди рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдЬрд╡рд╛рдЗрди рдФрд░ рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ (рдЕрдЬрд╡рд╛рдЗрди рдХрдиреЗрдХреНрд╢рди рдЦреЛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕рдордп рдХреЗ рднрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╕реАрдкреАрдпреВ 1 рдХреЛрд░ рдкрд░ 100% рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░рд╛ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЬрд╡рд╛рдЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдореИрдВ рдпрд╣рд╛рдВ рдмрддрд╛ рд░рд╣рд╛ рд╣реВрдВ рдпрд╣ рдЯреНрд░рд┐рдЧрд░ рд╣реИ: рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдореБрджреНрджреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдерд┐рдд рд╣реВрдВ рдФрд░ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЦрд░рдЧреЛрд╢ рд╕реНрдореГрддрд┐ рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдХреБрдЫ рд╕рдВрджреЗрд╢ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред рдЙрд╕ рд╕рдордп рдЕрдЬрд╡рд╛рдЗрди рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЦрд░рдЧреЛрд╢ рд▓реЙрдЧреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рджрд╕рд┐рдпреЛрдВ рдХрдиреЗрдХреНрд╢рди / рд╡рд┐рдпреЛрдЬрди рд╕рдВрдЪрд╛рд▓рди рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, ~ 10 рдХреЗ рдмреИрдЪ рдореЗрдВ рдпрд╛ рдПрдХ рдмрд╛рд░ рдореЗрдВред рд░реИрдмрд┐рдЯрдмрд╛рд░реНрдЯ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрдЬрд╡рд╛рдЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЗрд╕реЗ рддреБрд░рдВрдд рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдЪрд┐рдд рдлрд╝рд┐рдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдПрдХреНрд╕рдкрд╛рдпрд░ рдкреЙрд▓рд┐рд╕реА рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдиреЗ рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рддрдм рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛, рдЙрд╕реЗ (рд▓рд╛рд▓ рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде рдЦрд░рдЧреЛрд╢реЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░рдирд╛) рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ / рд╕рд░реНрд╡рд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯреНрд░рд┐рдЧрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣реА рд╣реЛ рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдерд╛ред

рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЛ https://github.com/celery/celery/tree/master/funtests/stress рд╕реЗ https://github.com/celery/cyanide рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ Python2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджрд▓рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди 2 рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдЗрд╕рдиреЗ !join: connection lost: error(104, 'Connection reset by peer') рдЙрдард╛рдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?

рдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рд╣реИред

тЮЬ  cyanide git:(master) pipenv run python -m cyanide.bin.cyanide
Loading .env environment variablesтАж
Cyanide v1.3.0 [celery 4.2.0 (windowlicker)]

Linux-4.13.0-45-generic-x86_64-with-debian-stretch-sid

[config]
.> app:    cyanide:0x7fb097f31710
.> broker: amqp://**:**@**:**/cyanide
.> suite: cyanide.suites.default:Default

[toc: 12 tests total]
.> 1) manyshort,
.> 2) always_timeout,
.> 3) termbysig,
.> 4) timelimits,
.> 5) timelimits_soft,
.> 6) alwayskilled,
.> 7) alwaysexits,
.> 8) bigtasksbigvalue,
.> 9) bigtasks,
.> 10) smalltasks,
.> 11) revoketermfast,
.> 12) revoketermslow

+enable worker task events...
+suite start (repetition 1)
[[[manyshort(50)]]]
 1: manyshort                            OK (1/50) rep#1 runtime: 15.00 seconds/15.01 seconds
 1: manyshort                            OK (2/50) rep#1 runtime: 13.16 seconds/28.17 seconds
 1: manyshort                            OK (3/50) rep#1 runtime: 13.29 seconds/41.46 seconds
 1: manyshort                            OK (4/50) rep#1 runtime: 13.70 seconds/55.16 seconds
 1: manyshort                            OK (5/50) rep#1 runtime: 13.77 seconds/1.15 minutes
 1: manyshort                            OK (6/50) rep#1 runtime: 13.91 seconds/1.38 minutes
!join: connection lost: error(104, 'Connection reset by peer')
!Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 475/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 475/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',)
!join: connection lost: error(104, 'Connection reset by peer')
failed after 7 iterations in 3.12 minutes
Traceback (most recent call last):
  File "/home/***/.pyenv/versions/2.7.15/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/***/.pyenv/versions/2.7.15/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/***/Documents/Python-Dev/cyanide/cyanide/bin/cyanide.py", line 62, in <module>
    main()
  File "/home/***/Documents/Python-Dev/cyanide/cyanide/bin/cyanide.py", line 58, in main
    return cyanide().execute_from_commandline(argv=argv)
  File "/home/***/.local/share/virtualenvs/cyanide-Vy3PQPTU/lib/python2.7/site-packages/celery/bin/base.py", line 275, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "/home/***/.local/share/virtualenvs/cyanide-Vy3PQPTU/lib/python2.7/site-packages/celery/bin/base.py", line 363, in handle_argv
    return self(*args, **options)
  File "/home/***/.local/share/virtualenvs/cyanide-Vy3PQPTU/lib/python2.7/site-packages/celery/bin/base.py", line 238, in __call__
    ret = self.run(*args, **kwargs)
  File "/home/***/Documents/Python-Dev/cyanide/cyanide/bin/cyanide.py", line 20, in run
    return self.run_suite(names, **options)
  File "/home/***/Documents/Python-Dev/cyanide/cyanide/bin/cyanide.py", line 30, in run_suite
    ).run(names, **options)
  File "cyanide/suite.py", line 366, in run
    self.runtest(test, iterations, j + 1, i + 1)
  File "cyanide/suite.py", line 426, in runtest
    self.execute_test(fun)
  File "cyanide/suite.py", line 447, in execute_test
    fun()
  File "cyanide/suites/default.py", line 22, in manyshort
    timeout=10, propagate=True)
  File "cyanide/suite.py", line 246, in join
    raise self.TaskPredicate('Test failed: Missing task results')
cyanide.suite.StopSuite: Test failed: Missing task results

рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рд╣реИред

тЮЬ  cyanide git:(master) pipenv run celery -A cyanide worker -c 1
Loading .env environment variablesтАж

 -------------- celery@** v4.2.0 (windowlicker)
---- **** ----- 
--- * ***  * -- Linux-4.13.0-45-generic-x86_64-with-debian-stretch-sid 2018-07-03 12:59:28
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         cyanide:0x7fdc988b4e90
- ** ---------- .> transport:   amqp://**:**@**:**/cyanide
- ** ---------- .> results:     rpc://
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> c.stress         exchange=c.stress(direct) key=c.stress


[2018-07-03 12:59:29,883: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [e6e71bed-8e58-4e7e-96c5-f56b583a37af, 42fd4f97-4ff5-4e0e-b874-89e7b3f0ff22, 3de45eeb-9b89-41bc-8284-95a4c07aa34a,...]: TimeoutError('The operation timed out.',) !
[2018-07-03 12:59:29,886: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [e6e71bed-8e58-4e7e-96c5-f56b583a37af, 42fd4f97-4ff5-4e0e-b874-89e7b3f0ff22, 3de45eeb-9b89-41bc-8284-95a4c07aa34a,...]: TimeoutError('The operation timed out.',) !
[2018-07-03 12:59:30,964: WARNING/ForkPoolWorker-1] + suite start (repetition 1) +
[2018-07-03 12:59:30,975: WARNING/ForkPoolWorker-1] ---  1: manyshort                             (0/50) rep#1 runtime: 0.0000/0.0000 ---
[2018-07-03 13:01:07,835: WARNING/ForkPoolWorker-1] ! join: connection lost: error(104, 'Connection reset by peer') !
[2018-07-03 13:01:17,918: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:01:27,951: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:01:38,902: WARNING/ForkPoolWorker-1] ! Still waiting for 475/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:01:48,934: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:01:58,961: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:02:09,906: WARNING/ForkPoolWorker-1] ! Still waiting for 475/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:02:19,934: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:02:29,964: WARNING/ForkPoolWorker-1] ! Still waiting for 1000/1000: [1624cd7a-3cc0-474a-b957-b0484f6b4937, 2b436525-73de-4062-bd6b-924cbd11ba74, ce04cb5e-a99e-41e2-95dc-e9bc351e606d,...]: TimeoutError(u'The operation timed out.',) !
[2018-07-03 13:02:37,900: WARNING/ForkPoolWorker-1] ! join: connection lost: error(104, 'Connection reset by peer') !

рдореИрдВрдиреЗ рдПрдХ рд╣реА рд╕реНрдЯреНрд░реЗрд╕ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЗ рд╕рд╛рде рдЕрдЬрд╡рд╛рдЗрди 3.1.25 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

BTW рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬреЛ рддреЗрдЬреА рд╕реЗ рдареАрдХ рд╣реЛрдиреЗ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ - рд░реИрдмреАрдЬ рдХреЗ рд╕рд╛рде рдЦрд░рдЧреЛрд╢ рдХреА рдЬрдЧрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @jxltom рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд░реЗрдбрд┐рд╕ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рдХрд╛рдо рдХреЗ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ
рддреЛ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЦрд░рдЧреЛрд╢ рдХреЗ рдкрд╛рд╕ рдХрд╣реАрдВ <-> рдЕрдЬрд╡рд╛рдЗрди рд╕реАрдорд╛ рд╣реИ

@dieeasy рд╣рдордиреЗ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЖрд░рдкреАрд╕реА рдкрд░рд┐рдгрд╛рдо рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ DB рдкрд░рд┐рдгрд╛рдо рдмреИрдХрдПрдВрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐: https://github.com/celery/kombu/pull/779 рдФрд░ рдпрд╣рд╛рдБ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/celery/kombu/pull/779#discussion_r13496801111

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╣реИ
рд╕реНрдореГрддрд┐
image

рд╕рдВрд╕реНрдХрд░рдг
рдЕрдЬрдЧрд░ 3.6.5 рдЕрдЬрд╡рд╛рдЗрди 4.2.1 рдмреИрдХреЗрдВрдб redis рдмреНрд░реЛрдХрд░ rabbitmq

рдХреЙрдиреНрдлрд╝рд┐рдЧ

[celery]
broker_url=amqp://taunt:[email protected]:5672/%2ftaunt
celery_result_backend=redis://xx.xx.xx.xx:6379
# 7days
celery_task_result_expires=604800
celery_task_serializer=msgpack
celery_result_serializer=json
celery_accept_content=json,msgpack
celery_timezone=Asia/Shanghai
celery_enable_utc=True

[cmd]
worker=True
proj=app.worker.celery
log_level=INFO
name=send_im%%h
queue=im
autoscale=10,3
concurrency=10

`` `рдЕрдЬрдЧрд░

- - рдХреЛрдбрд┐рдВрдЧ: utf-8 - -

рдХреЛрдореНрдмреВ рдЖрдпрд╛рдд рдХрддрд╛рд░ рд╕реЗ, рдПрдХреНрд╕рдЪреЗрдВрдЬ
рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ oslo_log рдЖрдпрд╛рдд рд▓реЙрдЧ рд╕реЗ

app.conf рд╕реЗ рдЖрдпрд╛рдд CONF

Log = logging.getLogger (__ name__)

celery_queues = (
рдХрддрд╛рд░ ('im', рд╡рд┐рдирд┐рдордп = рд╡рд┐рдирд┐рдордп ('рдкреНрд░реЗрд╖рдХ'), рдорд╛рд░реНрдЧ_рдХреА = 'im'),
рдХрддрд╛рд░ ('рдПрд╕рдПрдордПрд╕', рд╡рд┐рдирд┐рдордп = рд╡рд┐рдирд┐рдордп ('рдкреНрд░реЗрд╖рдХ'), рдорд╛рд░реНрдЧ_рдХреА = 'рдПрд╕рдПрдордПрд╕'),
рдХрддрд╛рд░ ('рдореЗрд▓', рд╡рд┐рдирд┐рдордп = рд╡рд┐рдирд┐рдордп ('рдкреНрд░реЗрд╖рдХ'), рдорд╛рд░реНрдЧ_рдХреА = 'рдореЗрд▓'),
рдХрддрд╛рд░ ('ivr', рд╡рд┐рдирд┐рдордп = рд╡рд┐рдирд┐рдордп ('рдкреНрд░реЗрд╖рдХ'), рдорд╛рд░реНрдЧ_рдХреА = 'ivr')
)

celery_routes = {
'рдкреНрд░реЗрд╖рдХред'
'рдкреНрд░реЗрд╖рдХред рдПрд╕рдПрдордПрд╕': {'рдХрддрд╛рд░': 'рдПрд╕рдПрдордПрд╕', 'рд░реВрдЯрд┐рдВрдЧ_рдХреА': 'рдПрд╕рдПрдордПрд╕'}}
'рдкреНрд░реЗрд╖рдХред рдИрдореЗрд▓': {'рдХрддрд╛рд░': 'рдореЗрд▓', 'рд░реВрдЯрд┐рдВрдЧ_рдХреА': 'рдореЗрд▓'},
'рдкреНрд░реЗрд╖рдХред'
}

рд╡рд┐рдиреНрдпрд╛рд╕ = {
'BROKER_URL': CONF.celery.broker_url,
'CELERY_RESULT_BACKEND': CONF.celery.celery_result_backend,
'CELERY_TASK_RESULT_EXPIRES': CONF.celery.celery_task_result_expires,
'CELERY_TASK_SERIALIZER': CONF.celery.celery_task_serializer,
'CELERY_RESULT_SERIALIZER': CONF.celery.celery_result_serialis,
'CELERY_ACCEPT_CONTENT': CONF.celery.celery_accept_content.split (',')
'CELERY_TIMEZONE': CONF.celery.celery_timezone,
'CELERY_ENABLE_UTC': CONF.celery.celery_enable_utc,
'CELERY_QUEUES': celery_queues,
'CELERY_ROUTES': celery_routes
}

**Startup**
```python

def make_command() -> list:
    log_path = f'{CONF.log_dir}{os.sep}{CONF.log_file}'
    command_name = f'{sys.path[0]}{os.sep}celery'
    command = [command_name, 'worker', '-A', CONF.cmd.proj, '-E']
    if CONF.cmd.log_level:
        command.extend(['-l', CONF.cmd.log_level])
    if CONF.cmd.queue:
        command.extend(['-Q', CONF.cmd.queue])
    if CONF.cmd.name:
        command.extend(['-n', CONF.cmd.name])
    # if CONF.cmd.autoscale:
    #     command.extend(['--autoscale', CONF.cmd.autoscale])
    if CONF.cmd.concurrency:
        command.extend(['--concurrency', CONF.cmd.concurrency])
    command.extend(['-f', log_path]) 
    return command


if CONF.cmd.worker:
    LOG.info(make_command())
    entrypoint = celery.start(argv=make_command())

рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╣реВрдВ рдФрд░ рдЦрд░рдЧреЛрд╢ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХрдВрд╕реЛрд▓ рдХреЛ рдЦреЛрд▓рдХрд░, рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдЬрд╡рд╛рдЗрди рд╕реЗ рдЦрд░рдЧреЛрд╢ рдХреЗ рд▓рд┐рдП рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЕрдЬрд╡рд╛рдЗрди рек.рез рдФрд░ рек.реи рдФрд░ рдЦрд░рдЧреЛрд╢ рей. ..-1-рез рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рднреА рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг 3.6.5 рдФрд░ ubuntu 16.04 (AWS EC2 рдЫрд╡рд┐)

рдореИрдВ рдЕрдЬрд╡рд╛рдЗрди 4.2.1 рдФрд░ рд░реЗрдбрд┐рд╕ рдмреНрд░реЛрдХрд░ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕реНрдореГрддрд┐ 3 рдШрдВрдЯреЗ рдореЗрдВ 100 MiB рд╕реЗ 500 MiB (рд╕реАрдорд┐рдд) рддрдХ рдмрдврд╝рддреА рд╣реИ, рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдлреВрд▓ рдореЗрдВ рдСрдлрд╝рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдкреВрд▓ рдФрд░ рдЬреАрд╡реЗрдВрдЯ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред

@yifeikong рдпрд╣ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/celery/celery/pull/4839#issuecomment -447739820?

@georgepsarakis рдореИрдВ Python 3.6.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдмрдЧ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдХреБрдЫ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдПрдХ рдЕрдЬрд╡рд╛рдЗрди рдмрдЧ рдерд╛, рддреЛ рдореИрдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж

рд╢рд╛рдпрдж # 5047 рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдХрд╛рд░рдг рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рдЕрд▓рдЧ рдШрдЯрдирд╛ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдПрдХ рд╣реА рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗрд▓рд░реА 4.2.1, рдХреЛрдореНрдмреВ 4.2.2 рдФрд░ рдкрд╛рдпрдерди 3.6, рд░реИрдмрд┐рдЯрдПрдордХреНрдпреВ рдХреЗ рд╕рд╛рде рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

$ celery --app=eventr.celery_app report

software -> celery:4.2.1 (windowlicker) kombu:4.2.2-post1 py:3.6.8
            billiard:3.5.0.5 py-amqp:2.4.0
platform -> system:Linux arch:64bit imp:CPython

рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдХрдИ рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЖрд░реНрдбреНрд╕ (рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕, рдЬреЗрдорд▓реЙрдХ, рд▓рд┐рдмрд╛рдордХрдк, рдмрдВрджрд░ рдкрде __del__ AsyncResult ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдордиреЗ рд╣рдореЗрд╢рд╛ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛрдиреЗ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдЕрдкрдиреЗ рд▓реЙрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрдкрд╢рдк рд╕реЗ рдЫреВрдЯреЗ рд╣реБрдП рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрджреЗрд╢ рдереЗред

{"asctime": "2019-01-25 13:40:06,486", "levelname": "INFO", "name": "celery.worker.consumer.gossip", "funcName": "on_node_lost", "lineno": 147, "message": "missed heartbeat from celery@******"}

рдПрдХ рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рд╣рдордиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ --without-gossip рд╕рд╛рде рдЪрд▓рд╛рдХрд░ рдЧрдкрд╢рдк рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ, рдЧрдкрд╢рдк рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рддрддреНрдХрд╛рд▓ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рд╛ред

рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
celery-memory-14d

рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рдордЬрджреВрд░реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЧрдкрд╢рдк рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред

рдЕрдЧрд░ рдЖрдк рдзреНрдпрд╛рди рджреЗрдВ, рддреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рд╕рдорд╛рди рдореЗрдореЛрд░реА рд╕реНрдкрд╛рдЗрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд░рд╣реЗ рдереЗ, https://github.com/celery/celery/issues/4843#issuecomment -399833781

рдПрдХ рдмрд╛рдд рдЬреЛ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдЧрдкрд╢рдк рдХреЗ рдирд┐рд╣рд┐рддрд╛рд░реНрде рдХреНрдпрд╛ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ <-> рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рдВрдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛?

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдХреНрд░рд┐рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд░реБрдЪрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдЦреИрд░ @georgepsarakis рдХреЗ рдмрд╛рдж рд╕реЗ рд╣рдордиреЗ рдЕрдкрдиреЗ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдирд┐рджрд╛рди # 4839 рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпрд╣ # 4843 рдерд╛, рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдЗрд╕ рд▓реАрдХ рдзрд╛рдЧреЗ рдХреЛ рдкрд▓рдЯреВрдВрдЧрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ # 4843 рдореЗрд░рд╛ рд▓реАрдХ рд╣реИред рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░:

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕реЗрд▓реЗрд░реА 4.1 рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕реЗрд▓реЗрд░реА 4.2 рдореЗрдВ рднреА рд╣реЛрддреА рд╣реИред
рдЕрдЬрд╡рд╛рдЗрди Ubuntu 16 рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИ рдФрд░ рджрд▓рд╛рд▓ RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реВрдБ:

рдЕрдЬрдЧрд░ 2.7.12
Ubuntu 16.04.1 amd64
рдЦрд░рдЧреЛрд╢ рей.bit.рел

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:

рдЕрдЬрд╡рд╛рдЗрди 4.1.1
librabbitmq 2.0.0
amqp 2.4.0
рдмреЗрд▓ 1.1.4
рдмрд┐рд▓рд┐рдпрд░реНрдб 3.5.0.5
kombu 4.2.2.post1
рез.реи.реи

рд╣рд╛рд▓рд╛рдБрдХрд┐, Celery 4.1.1 + gevent 1.2.2 рдореЗрд░реЗ рд▓рд┐рдП рд▓реАрдХ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдирд╛ рд╣реА Celery 3.1.25 + gevent 1.2.2 AFAQT); рдЕрдЬрд╡рд╛рдЗрди 4.2.1 + рдЬреАрд╡реЗрдВрдЯ 1.3.7 рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдЬреАрдИрдПрдирдИрдЯреА 1.3.7 рдФрд░ рдЬреАрд╡реЗрдВрдЯ 1.2.2 рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЬреАрд╡реЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ (рдпрд╛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рдореЗрдп рдирд╣реАрдВ рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╣рдореНрдо ... рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреИрдЪ (022f447dd) рд╣реИ рдЬреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдорд┐рд▓реА рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рдореИрдВрдиреЗ 022f447 рдХреЛ рд╕реЗрд▓реЗрд░реА 4.1.1 рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдФрд░ 1.3.7 рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдЙрд╕ рд╕реЗрд▓реЗрд░реА + рдЬреАрд╡реЗрдВрдЯ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдиреЗ рджреМрдбрд╝ рд▓рдЧрд╛рдИ ... рдФрд░ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ рдЬреЛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрднрд╡ рдХреА рдЧрдИ рд░рд┐рд╕рд╛рд╡ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдореИрдВ Celery 4.2.1 + gevent 1.2.2 (рд░рд┐рд╡рд░реНрд╕ рдкреИрдЪ рдХреЗ рд╕рд╛рде) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрдБрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдп рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдорд┐рд▓рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 1.4.0 рдЬреЗрдВрдЯ рдмрд╛рд╣рд░ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рднрдВрд╡рд░ рджреЗ рджреВрдВ рдХрд┐ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╕реЗрд▓реЗрд░реА 4.2.1 + рдЬреАрд╡реЗрдВрдЯ 1.2.2 + рдЬрд┐рдпреЛрд╡реЗрдВрдЯ 1.2.2 рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд░реНрд╕ рдкреИрдЪ рд▓реАрдХ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рд▓рдЧрддрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╕реЗрд▓реЗрд░реА 4.2.1 + рдЬреАрд╡реЗрдВрдЯ 1.3.7 рд╣реИред

рдЕрдЬрд╡рд╛рдЗрди 4.2.1 + рдЬреАрд╡реЗрдВрдЯ 1.4.0, рд▓рдЧрднрдЧ 1.3.7 рдПрдПрдлрдПрдЖрдИрд╕реАрдЯреА рдХреЗ рд╕рдорд╛рди рджрд░ рдкрд░ рд▓реАрдХ рд╣реЛрддрд╛ рд╣реИред

https://github.com/celery/celery/blob/9f0a554dc2d28c630caf9d192873d040043b7346/celery/events/dispatcher.py

    def _publish(self, event, producer, routing_key, retry=False,
                 retry_policy=None, utcoffset=utcoffset):
        exchange = self.exchange
        try:
            producer.publish(...)
        except Exception as exc:  # pylint: disable=broad-except
            if not self.buffer_while_offline:  # <-- False by default
                raise
            self._outbound_buffer.append((event, routing_key, exc))  # <---- Always buffered

    def send(self, type, blind=False, utcoffset=utcoffset, retry=False,
            ...
            if group in self.buffer_group:   # <--- Never true for eventlet & gevent
                ...
                if len(buf) >= self.buffer_limit:
                    self.flush()     #  <---- Never flushed even when grows above limit
                ...
            else:
                return self.publish(type, fields, self.producer, blind=blind,
                                    Event=Event, retry=retry,

https://github.com/celery/celery/blob/b2668607c909c61becd151905b4525190c19ff4a/celery/worker/consumer/events.py

    def start(self, c):
        # flush events sent while connection was down.
        prev = self._close(c)
        dis = c.event_dispatcher = c.app.events.Dispatcher(
            ...
            # we currently only buffer events when the event loop is enabled
            # XXX This excludes eventlet/gevent, which should actually buffer.
            buffer_group=['task'] if c.hub else None,
            on_send_buffered=c.on_send_event_buffered if c.hub else None,
        )
        if prev:
            dis.extend_buffer(prev)
            dis.flush()    # <---- The only (!) chance to flush on [g]event[let] is on reconnect.

рдЕрдм, рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдПрдордХреНрдпреВрдкреА рд╣реБрдб рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рд╣реИ рдФрд░ рдЬрдм рдпрд╣ рдЯреВрдЯреЗ рд╣реБрдП рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдкреБрди: рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ (рдЧрдкрд╢рдк, рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд▓реАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдИрд╡реЗрдВрдЯрд▓реЗрдЯ рдФрд░ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХрдиреЗрдХреНрд╢рди рдореБрджреНрджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрддрд░ / рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддреЗ рд╣реИрдВред

рдирдорд╕реНрддреЗ,

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╣реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
рд╣рдорд╛рд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдиреАрдЪреЗ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдпрд╛ рддреЛ рдирдХрд╛рд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ?

рдЕрдЬрдЧрд░: 2.7
рдЕрдЬрд╡рд╛рдЗрди: 4.2.1
OS: CentOS рд░рд┐рд▓реАрдЬрд╝ 6.10
рджрд▓рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕

рд╕рдВрд▓рдЧреНрди рдЪрд┐рддреНрд░ рдореЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИ рдФрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдкрд░ рдЧрд┐рд░ рд░рд╣реА рд╣реИред
  2. 13 рдЬрдирд╡рд░реА рдХреЛ - рд╣рдордиреЗ рдЕрдЬрд╡рд╛рдЗрди 3.1.25 рд╕реЗ 4.2.1 рддрдХ рдЙрдиреНрдирдд рдХрд┐рдпрд╛ред рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдмрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдмрдврд╝рддреА рд╣реИред

image

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдордиреЗ рдЕрдЬрдЧрд░ 3.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рддрдм рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рд╕рд╛рд╡ рдЕрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

image
(19 рдлрд░рд╡рд░реА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рд╣реБрдЖ рдерд╛)

@georgepsarakis

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрдЬрд╡рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ 2GB SWAP рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕реНрдЯреЙрдкрд┐рдВрдЧ рдлреНрд▓реЙрд╡рд░ рдиреЗ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕реЗрд▓реЗрд░реА рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛

рдХрд┐рд╕реА рдХреЛ рдЕрдЬрд╡рд╛рдЗрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ 4.3rc1?

@auvipy рдореИрдВрдиреЗ Celery 4.3.0rc1 + gevent 1.4.0 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдЕрдкрдЧреНрд░реЗрдбреЗрдб рдмрд┐рд▓рд┐рдпрд░реНрдб рдХреЛ 3.6.0.0 рдФрд░ рдХреЛрдореНрдмреВ рдХреЛ 4.3.0ред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ rc1 рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдмреЗрд▓ 1.2.0 рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ # 4839 рдЙрд╕ рдЕрдкрдЧреНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡реИрд╕реЗ рднреА, рд╕реЗрд▓реЗрд░реА 4.3.0 рдЖрд░рд╕реА 1 рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред

@ ldav1s рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рддреЛ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рдИ-рдПрдордХреНрдпреВрдкреА рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд▓ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдИ рд╕реНрдерд╛рдкрдирд╛рдУрдВ рдореЗрдВ рдирд╡реАрдирддрдо vine рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@thedrow рд╢рд╛рдпрдж рд╣рдореЗрдВ рд╕реЗрд▓реЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдЖрдЗрдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВред

Celery 4.3.0rc1 + gevent 1.4.0 рдЕрдм рдХреБрдЫ рджрд┐рдиреЛрдВ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Celery 4.2.1 + gevent 1.4.0 рдХреЗ рд╕рдорд╛рди рдлреИрд╢рди рдореЗрдВ рд▓реАрдХ рд╣реЛ рд░рд╣рд╛ рд╣реИред

image

рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд░рд┐рд╕рд╛рд╡ 4.2.1, рдЕрдЬрдЧрд░ 3.6

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдЕрднрд┐рд╡рд╛рджрди,

рдореИрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рди рд╣реИред

рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг / рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдЬрд╡рд╛рдЗрди рдРрдк рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛, рддрдм рд╕реЗ рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рд░рд┐рд╕рд╛рд╡ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдФрд░ рдЦрд░рдЧреЛрд╢ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг / рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдереЗред

рдореЗрд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдЕрдЬрдЧрд░ 3.6.5 рдкрд░ рд╣реИ:

amqp (2.4.2)
billiard (3.5.0.5)
celery (4.1.1)
eventlet (0.22.0)
greenlet (0.4.15)
kombu (4.2.1)
vine (1.3.0)

Celeryconfig

broker_url = rabbitmq
result_backend = mongodb
task_acks_late = True
result_expires = 0
task_default_rate_limit = 2000
task_soft_time_limit = 120
task_reject_on_worker_lost = True
loglevel = 'INFO'
worker_pool_restarts = True
broker_heartbeat = 0
broker_pool_limit = None

рдЖрд╡реЗрджрди рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдИрд╡реЗрдВрдЯреНрд╕ рдкреВрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

[program:worker1]
command={{ celery_path }} worker -A celery_app --workdir {{ env_path }} -l info -E -P eventlet -c 250 -n worker1@{{ hostname }} -Q queue1,queue2

рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд╣рд░ ~ 10 рдШрдВрдЯреЗ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛, рдЕрдзрд┐рдХрддрдо 2 рд▓реАрдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
image

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕рд╛рд░рдг рд╕рдВрджреЗрд╢ рдмрдирд╛рдпрд╛ рд╣реИ, рдпрд╣ рдорд╢реАрди рдкрд░ рд╢реАрд░реНрд╖ рдХрдорд╛рдВрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ 1464m рдХреЗ рд╕рд╛рде рд▓реАрдХ рд╣реИ:

217m   1%   2   0% /usr/bin/python3 -m celery worker -A celery_app --workdir   379
189m   1%   0   0% /usr/bin/python3 -m celery worker -A celery_app --workdir   377     
1464m   9%   1   0% /usr/bin/python3 -m celery worker -A celery_app --workdir   378
218m   1%   0   0% /usr/bin/python3 -m celery worker -A celery_app --workdir   376 
217m   1%   2   0% /usr/bin/python3 -m celery worker -A celery_app --workdir   375
217m   1%   3   0% /usr/bin/python3 -m celery worker -A celery_app --workdir   394
163m   1%   0   0% /usr/bin/python3 -m celery beat -A celery_app --workdir /app

рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ TOP 10 рд▓реАрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдкрд░рд┐рдгрд╛рдо

[2019-03-29 07:18:03,809: WARNING/MainProcess] [ Top 10: worker5<strong i="6">@hostname</strong> ]

[2019-03-29 07:18:03,809: WARNING/MainProcess] /usr/lib/python3.6/site-packages/eventlet/greenio/base.py:207: size=17.7 MiB, count=26389, average=702 B

[2019-03-29 07:18:03,810: WARNING/MainProcess] /usr/lib/python3.6/site-packages/kombu/messaging.py:203: size=16.3 MiB, count=44422, average=385 B

[2019-03-29 07:18:03,811: WARNING/MainProcess] /usr/lib/python3.6/site-packages/celery/worker/heartbeat.py:49: size=15.7 MiB, count=39431, average=418 B

[2019-03-29 07:18:03,812: WARNING/MainProcess] /usr/lib/python3.6/site-packages/celery/events/dispatcher.py:156: size=13.0 MiB, count=40760, average=334 B

[2019-03-29 07:18:03,812: WARNING/MainProcess] /usr/lib/python3.6/site-packages/eventlet/greenio/base.py:363: size=12.9 MiB, count=19507, average=695 B

[2019-03-29 07:18:03,813: WARNING/MainProcess] /usr/lib/python3.6/site-packages/amqp/transport.py:256: size=12.7 MiB, count=40443, average=328 B

[2019-03-29 07:18:03,814: WARNING/MainProcess] /usr/lib/python3.6/site-packages/celery/events/dispatcher.py:138: size=12.4 MiB, count=24189, average=539 B

[2019-03-29 07:18:03,814: WARNING/MainProcess] /usr/lib/python3.6/site-packages/amqp/transport.py:256: size=12.3 MiB, count=19771, average=655 B

[2019-03-29 07:18:03,815: WARNING/MainProcess] /usr/lib/python3.6/site-packages/amqp/connection.py:505: size=11.9 MiB, count=39514, average=317 B

[2019-03-29 07:18:03,816: WARNING/MainProcess] /usr/lib/python3.6/site-packages/kombu/messaging.py:181: size=11.8 MiB, count=61362, average=201 B

25 рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ 1

TOP 1

[2019-03-29 07:33:05,787: WARNING/MainProcess] [ TOP 1: worker5<strong i="10">@hostname</strong> ]

[2019-03-29 07:33:05,787: WARNING/MainProcess] 26938 memory blocks: 18457.2 KiB

[2019-03-29 07:33:05,788: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/eventlet/greenio/base.py", line 207

[2019-03-29 07:33:05,788: WARNING/MainProcess] mark_as_closed=self._mark_as_closed)

[2019-03-29 07:33:05,789: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/eventlet/greenio/base.py", line 328

[2019-03-29 07:33:05,789: WARNING/MainProcess] timeout_exc=socket_timeout('timed out'))

[2019-03-29 07:33:05,790: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/eventlet/greenio/base.py", line 357

[2019-03-29 07:33:05,790: WARNING/MainProcess] self._read_trampoline()

[2019-03-29 07:33:05,790: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/eventlet/greenio/base.py", line 363

[2019-03-29 07:33:05,791: WARNING/MainProcess] return self._recv_loop(self.fd.recv, b'', bufsize, flags)

[2019-03-29 07:33:05,791: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/amqp/transport.py", line 440

[2019-03-29 07:33:05,791: WARNING/MainProcess] s = recv(n - len(rbuf))

[2019-03-29 07:33:05,792: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/amqp/transport.py", line 256

[2019-03-29 07:33:05,792: WARNING/MainProcess] frame_header = read(7, True)

[2019-03-29 07:33:05,792: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/amqp/connection.py", line 505

[2019-03-29 07:33:05,793: WARNING/MainProcess] frame = self.transport.read_frame()

[2019-03-29 07:33:05,793: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/amqp/connection.py", line 500

[2019-03-29 07:33:05,793: WARNING/MainProcess] while not self.blocking_read(timeout):

[2019-03-29 07:33:05,793: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/kombu/transport/pyamqp.py", line 103

[2019-03-29 07:33:05,794: WARNING/MainProcess] return connection.drain_events(**kwargs)

[2019-03-29 07:33:05,794: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/kombu/connection.py", line 301

[2019-03-29 07:33:05,794: WARNING/MainProcess] return self.transport.drain_events(self.connection, **kwargs)

[2019-03-29 07:33:05,795: WARNING/MainProcess] File "/usr/lib/python3.6/site-packages/celery/worker/pidbox.py", line 120

[2019-03-29 07:33:05,795: WARNING/MainProcess] connection.drain_events(timeout=1.0)

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдмреАрдЪ рдпрд╛рдж рдХреА рдзрдбрд╝рдХрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред рдЕрдм рдореИрдВ рдкреБрд░рд╛рдиреЗ env рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдмрд╛рд╕ рдХреЗ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЕрджреНрдпрддрди: рдПрдХ рд╣реА рд╕рдЯреАрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдПрдХ рдмреНрд░реЛрдХрд░ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рдЖрд╡реЗрджрди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реНрдерд┐рд░ рджрд┐рдЦрддрд╛ рдерд╛: 2 рджрд┐рдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ, рдлрд┐рд░ рд╕реЗ рд▓реАрдХ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВред

рд╕рдордп-рд╕рдордп рдкрд░ ~ 1 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рд╕реНрдкрд╛рдЗрдХ рдЬрд╛рд░реА рдереЗ, рд▓реЗрдХрд┐рди "рдЕрд╡рд╢реЛрд╖рд┐рдд / рдПрдХрддреНрд░рд┐рдд" рдереЗ .. рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реНрдкрд╛рдЗрдХ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

1 рд╕реНрдкрд╛рдЗрдХ, 1 рд░реИрдВрдк рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд▓реАрдХрд┐рдВрдЧ рд╡рд░реНрдХрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ .. рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдФрд░ рд╡рд░реНрдХрд░ рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рдж рд▓реАрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реАрдХ рд╣реЛ рд░рд╣рд╛ рдерд╛, рджреВрд╕рд░рд╛ рд░реИрдВрдкред

image

рдореИрдВ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХреЗ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рдЕрджреНрдпрддрди: рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХреЗ рдмрд┐рдирд╛ 2 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓реАрдХ, рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░

440m   3%   1   0% /usr/bin/python3 -m celery worker -A celery_app --without-heartbeat --workdir /app -l info -E -P eventlet -c 250 -Ofair -n worker1@ -Q p_1_queue,p_2_queue
176m   1%   0   0% /usr/bin/python3 -m celery worker -A celery_app --without-heartbeat --workdir /app -l info -E -P eventlet -c 250 -Ofair -n worker2@ -Q p_1_queue,p_2_queue
176m   1%   2   0% /usr/bin/python3 -m celery worker -A celery_app --without-heartbeat --workdir /app -l info -E -P eventlet -c 250 -Ofair -n worker5@ -Q p_1_queue,p_2_queue
176m   1%   1   0% /usr/bin/python3 -m celery worker -A celery_app --without-heartbeat --workdir /app -l info -E -P eventlet -c 250 -Ofair -n worker3@ -Q p_1_queue,p_2_queue
176m   1%   1   0% /usr/bin/python3 -m celery worker -A celery_app --without-heartbeat --workdir /app -l info -E -P eventlet -c 250 -Ofair -n worker4@ -Q p_1_queue,p_2_queue
171m   1%   1   0% /usr/bin/python3 -m celery worker -A celery_app --without-heartbeat --workdir /app -l info -E -P eventlet -c 20 -n worker_p_root@ -Q p_root_queue
157m   1%   0   0% /usr/bin/python3 -m celery beat -A celery_app --workdir /app --schedule /app/beat.db -l info

image

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
рдЕрдЬрд╡рд╛рдЗрди 4.3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ
image

amqp (2.4.2)
billiard (3.6.0.0)
celery (4.3.0)
eventlet (0.24.1)
greenlet (0.4.15)
kombu (4.5.0)
vine (1.3.0)

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдХреЛрдб рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд▓рд┐рдВрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рдзрдиреНрдпрд╡рд╛рдж

рдореБрдЭреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рднреА рд╣реЛ рд░рд╣реА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реВрдВред
https://github.com/celery/celery/blob/master/celery/events/dispatcher.py#L75
рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрдлрд░ рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рдж рдмрдврд╝рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдврд╝рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд░рд╛рдо рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ buffer_while_offline=False https://github.com/celery/celery/blob/master/celery/worker/consumer/events.py#L43 рдореЗрд░реЗ рд▓рд┐рдП рд▓реАрдХ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?

@ yevhen-m рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХреЗрдЬ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА!

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдирд┐рд░рдВрддрд░ рдЗрд╕ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдореБрджреНрджреЗ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ

image

celery-pod-screencshot-lastweek

рдореИрдВ рдПрдХ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдЬрд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдбреЙрдХрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдирд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреА рддрд░рд╣, рд╣рдореЗрдВ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди рд╡рд┐рдиреНрдпрд╛рд╕ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдбреЙрдХрд░ рдкреИрд░реЗрдВрдЯ рдЫрд╡рд┐: рдЕрдЬрдЧрд░ 3.6.8-рдмрд╕реНрдЯрд░
рдЕрдЬрд╡рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг: 4.2.0
рдХрдорд╛рдВрдб рд╡рд┐рдХрд▓реНрдк:

  • рд╕рдВрдЧрд╛рдорд┐рддрд┐ рек
  • рдкреНрд░реАрдлреИрдЪ-рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░ 8
  • рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо_рдмреЗрдВрдб рдирд╣реАрдВ
  • acks_late рдФрд░ reject_on_worker_lost

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 4.3.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдЬрд╡рд╛рдЗрди 4.4.0 рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╣реИ

рдЯреАрдо, рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдкрддрд╛ рдерд╛ рдФрд░ рдЕрдЬрд╡рд╛рдЗрди 4.4.0 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдЯреАрдо, рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдкрддрд╛ рдерд╛ рдФрд░ рдЕрдЬрд╡рд╛рдЗрди 4.4.0 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ рдирд╣реАрдВред рдЕрдм рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИред

рдЯреАрдо, рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдкрддрд╛ рдерд╛ рдФрд░ рдЕрдЬрд╡рд╛рдЗрди 4.4.0 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдпрд╣ 4.4.1 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛

рдпрд╣ 4.4.1 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛

рдХреНрдпрд╛ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 4.4.1 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

@auvipy рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдЕрдЬрд╡рд╛рдЗрди 4.4.2, рдФрд░ 4.4.6 рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╣рдо рд╕рднреА рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдореЗрдореЛрд░реА рд▓реАрдХ рджреЗрдЦрддреЗ рд╣реИрдВред

BROKER_POOL_LIMIT = None
CELERY_ACKS_LATE = False
CELERY_TRACK_STARTED = True
CELERYD_MAX_TASKS_PER_CHILD = 1
CELERYD_PREFETCH_MULTIPLIER = 1
BROKER_TRANSPORT_OPTIONS = {
    'fanout_prefix': True,
    'fanout_patterns': True,
    'visibility_timeout': 43200,
    'health_check_interval': 180,
    'socket_keepalive': True,
    'retry_on_timeout': True,
}

рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ -O fair --without-heartbeat --without-gossip -c 1 -l рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдХрддрд╛рд░реЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -n рдФрд░ -Q рдЭрдВрдбреЗ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдореЛрдб рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред Redis, рджрд▓рд╛рд▓ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреЛрд░ рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

image

~ рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВред рддреЛ рдЬреБрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИред ~

рдпрд╣ рд╡рд┐рдХрд▓рд╛рдВрдЧ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред

@jsynowiec рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬрд╝ рдЧреЙрд╕рд┐рдк рд╡рд┐рдХрд▓рд╛рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реА рдереА, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ https://github.com/celery/celery/issues/4843#issuecommentment -459789086

рд╣рдо рдЕрдЬрд╡рд╛рдЗрди 4.4.2 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕ рд╣реИрдВред 48 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдЕрдЬрд╡рд╛рдЗрди рдХреА рдЦрдкрдд 60 рдЬреАрдмреА рд░реИрдо рддрдХ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрдВрдд рдореЗрдВ рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддреА рд╣реИред
рдЗрд╕ рдирд╛рдо рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

рд╣рдо рдЕрдЬрд╡рд╛рдЗрди 4.4.2 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕ рд╣реИрдВред 48 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдЕрдЬрд╡рд╛рдЗрди рдХреА рдЦрдкрдд 60 рдЬреАрдмреА рд░реИрдо рддрдХ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрдВрдд рдореЗрдВ рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддреА рд╣реИред
рдЗрд╕ рдирд╛рдо рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╣рдорд╛рд░реЗ рдирд╡реАрдирддрдо рдкреИрдЪ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА?
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдУрдкреА рдХреЗ рд╕рдорд╛рди рд╢рд░реНрддреЗрдВ рд╣реИрдВ?

рдореЗрдореЛрд░реА рд▓реАрдХ рдЕрднреА рднреА v4.4.6 рдкрд░ рдореМрдЬреВрдж рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдУрдкреА RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рд░реЗрдбрд┐рд╕ рдХреЛ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

image

+1, рд╕реНрдореГрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдо рд╕реЗ рдХрдо 24 рдШрдВрдЯреЗ рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдиреНрдпреВрдирддрдо рдХрд╛рдо рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдореЗрдореЛрд░реА рд▓реАрдХ рдХреА рдЬрдбрд╝ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрдореЛрд░реА рд▓реАрдХ рдЕрднреА рднреА v4.4.6 рдкрд░ рдореМрдЬреВрдж рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдУрдкреА RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рд░реЗрдбрд┐рд╕ рдХреЛ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

image

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХрд┐ рд╣рдорд╛рд░рд╛ рдлрд┐рдХреНрд╕ рд╕рд╣реА рдирд╣реАрдВ рдерд╛ред
рдЪреВрдВрдХрд┐ рдЗрд╕рд╕реЗ рдУрдкреА рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ?

[2020-07-31 10:51:53,176: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=19.2 KiB (+19.2 KiB), count=180 (+180), average=109 B
[2020-07-31 10:53:53,271: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=230 KiB (+211 KiB), count=2160 (+1980), average=109 B
[2020-07-31 10:54:53,364: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=250 KiB (+19.2 KiB), count=2340 (+180), average=109 B

тАжред

[2020-07-31 12:24:10,633: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=49.9 MiB (+76.8 KiB), count=478620 (+720), average=109 B
[2020-07-31 12:25:14,528: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=49.9 MiB (+19.2 KiB), count=478800 (+180), average=109 B
[2020-07-31 12:27:22,346: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=49.9 MiB (+57.6 KiB), count=479340 (+540), average=109 B
[2020-07-31 12:28:26,265: WARNING/MainProcess] /usr/local/lib/python3.8/site-packages/redis/client.py:90: size=50.2 MiB (+269 KiB), count=481860 (+2520), average=109 B

CELERY_RESULT_BACKEND = False CELERY_IGNORE_RESULT = True CELERY_MAX_TASKS_PER_CHILD = 1 CELERY_WORKER_PREFETCH_MULTIPLIER = 1 CELERY_TASK_RESULT_EXPIRES = 10 CELERY_BROKER_POOL_LIMIT = 70 CELERY_REDIS_MAX_CONNECTIONS = 100
app.conf.broker_transport_options = {'visibility_timeout': 43200}

celery -A proj worker --concurrency=70 --prefetch-multiplier=1 -Ofair --pool=gevent -n --without-gossip --without-mingle

рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ? рдореИрдВ рдЕрдЬрд╡рд╛рдЗрди v4.4.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд╕рд╛рде рд╣реА рдмреНрд░реЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбреА, рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВред

рд╢рд╛рдпрдж рдпрд╣ рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдореЗрдВ рд╣реИ?
CC @jamadden @andymccurdy
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рд╕реНрдореГрддрд┐ рдЖрдкрдХреЗ рдЕрдВрдд рдореЗрдВ рд▓реАрдХ рди рд╣реЛ?

рд╢рд╛рдпрдж рдпрд╣ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдореЗрдВ рд╣реИ?

рд╣рдо gevent рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╕рдВрдЧрд╛рдорд┐рддрд┐ = 1 рдФрд░ рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╣рдо 2 рд╕рд╛рд▓ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рд╣рд░ рдмрд╛рд░ рд╕реЗрд▓реЗрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЕрднреА рднреА рдмрдбрд╝реЗ рд╕реЗрд╡рд░ (64-128 рдЬреАрдмреА рд░реИрдо) рд▓рдЧрд╛рддрд╛рд░ рд░реИрдо рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдореБрджреНрджреЛрдВ рдХреАред

рдХреНрдпрд╛ рд╕реЗрд▓реЗрд░реА 3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╛ рд░реИрдмрд┐рдЯрдореИрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ?

рдпрд╣ рд╕реЗрд▓реЗрд░реА рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдерд┐рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕реЗрд▓реЗрд░реА 3 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди (рд╢рд╛рдпрдж рдбреНрд░рд╛рдорд╛рддрд┐рдХ) рдкрд░ рдЬрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕реЗрд▓реЗрд░реА рдкреВрд░реЗ рд╕рд░реНрд╡рд░ рд░реИрдо рдЦрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХреЗред рдЙрддреНрдкрд╛рджрди рд╣рд░ 2 рджрд┐рдиред

@arielcamino - рдореИрдВ 100 ~ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_ max_tasks_per_child рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдПред рдореИрдВ 512MB рдХреЗ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рд╕реЗ рдореБрдЭреЗ (рдкрд╣рд▓реЗ рдореЗрд░реЗ рд░рд╛рдо рдХреЛ рдердХрдиреЗ рдореЗрдВ) рдорджрдж рдорд┐рд▓реА, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

@ рд╢реЛ рд╡рд╛рд╣, рдпрд╣ рд╕реБрдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

@arielcamino - рдореИрдВ 100 ~ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_ max_tasks_per_child рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдПред рдореИрдВ 512MB рдХреЗ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рд╕реЗ рдореБрдЭреЗ (рдкрд╣рд▓реЗ рдореЗрд░реЗ рд░рд╛рдо рдХреЛ рдердХрдиреЗ рдореЗрдВ) рдорджрдж рдорд┐рд▓реА, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЕрдкрдирд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рд╕реЗ рдпрд╣рд╛рдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА - рд╣рдо рд╣рд╛рд▓рд╛рдВрдХрд┐ рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@thedrow рдореБрдЭреЗ redis-py рдореЗрдВ рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд░реЗрдбрд┐рд╕-рдкреА рдореЗрдВ рдПрдХ рд░рд┐рд╕рд╛рд╡ рдерд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд╣рд░ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд░реЗрдбрд┐рд╕-рдкреА рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреА рд╕реВрдЪрдирд╛ рджреА рдереАред

рдЬрд╣рд╛рдВ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ (рдореИрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдПрдХ рджрд▓рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд▓реЗрд░реА рдбрдмреНрд▓реНрдпреВ / рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ), рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреА рддреИрдирд╛рддреА рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ (рдЖрд╢рд╛) рдХрд┐рд╕реА рдиреЗ рдХреБрдЫ рдХрд╣рд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдпрд╛ рджреЛ рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реБрдЖ рд╣реИ)ред рдЬрд┐рдпрд╡реЗрдВрдЯ рдХреА рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рддреИрдирд╛рддреА рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рд╡реЗрдм тАЛтАЛрдФрд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб) рд╣реИрдВ, рдЬреЛ рдПрдХ рд╕рдордп рдкрд░ рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдордиреЗ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╣рдо 2 рд╕рд╛рд▓ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рд╣рд░ рдмрд╛рд░ рд╕реЗрд▓реЗрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЕрднреА рднреА рдмрдбрд╝реЗ рд╕реЗрд╡рд░ (64-128 рдЬреАрдмреА рд░реИрдо) рд▓рдЧрд╛рддрд╛рд░ рд░реИрдо рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдореБрджреНрджреЛрдВ рдХреАред

рдХреНрдпрд╛ рд╕реЗрд▓реЗрд░реА 3 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╛ рд░реИрдмрд┐рдЯрдореИрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ?

рдпрд╣ рд╕реЗрд▓реЗрд░реА рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдерд┐рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕реЗрд▓реЗрд░реА 3 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди (рд╢рд╛рдпрдж рдбреНрд░рд╛рдорд╛рддрд┐рдХ) рдкрд░ рдЬрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕реЗрд▓реЗрд░реА рдкреВрд░реЗ рд╕рд░реНрд╡рд░ рд░реИрдо рдЦрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХреЗред рдЙрддреНрдкрд╛рджрди рд╣рд░ 2 рджрд┐рдиред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИрдВ? рдЖрдк рдХрд┐рддрдиреЗ рдХрд╛рд░реНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ? рдЖрдк рдХрд┐рддрдиреА рдмрд╛рд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ?

рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЦрд░рдЧреЛрд╢ / рдЕрдЬрд╡рд╛рдЗрди рд░рд╛рдо рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдХрддрд╛рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдореЛрдВ рдХреА рдХрддрд╛рд░ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрд░реНрдордЪрд╛рд░реА рдЙрди рд╕рднреА рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрддрд╛рд░ рдХреЛ рдмрдбрд╝рд╛ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдпрд╣ рдХрддрд╛рд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ RAM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА рдФрд░ рдЕрдВрддрддрдГ рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╕рднреА RAM рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдЧреАред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд░реЗрдбрд┐рд╕ рдХреЗ рд╕рд╛рде рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@ardilom рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо RabbitMQ рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдбреЙрдЧ рдкрд░ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ 2 рджрд┐рдиреЛрдВ рдореЗрдВ рдХреБрдЫ рд╕рд░реНрд╡рд░ рд░реИрдо рдиреАрдЪреЗ рдХреИрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ:
memory-leaks-1

рд╣рдо рд╣рдореЗрд╢рд╛ рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рд▓рдЧрднрдЧ 0 рд╣реИ (рдпрд╣ рдбреЗрдЯрд╛ рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ):

memory-leaks-2

рд╣рдо рдкреНрд░рддрд┐ рджрд┐рди рд▓рдЧрднрдЧ 250,000 рдХрд╛рд░реНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 10 рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд▓рдЧрднрдЧ 4 рд╕реЗ 10 рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╣реИрдВ, рдФрд╕рдд рд░рдирдЯрд╛рдЗрдо рд▓рдЧрднрдЧ 5 рд╕реЗрдХрдВрдб рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд╣рдо рд╣рдореЗрд╢рд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдВрдЪ рд▓реЗрддреЗ рд╣реИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдп рдХрддрд╛рд░рдмрджреНрдз рдирд╣реАрдВ рд╣реИрдВ (рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдк рджреВрд╕рд░реА рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ), рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдкрдирд╛ рдареАрдХ рд╣реИ? рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдВрддрддрдГ рдХреБрдЫ рд╢рд┐рдЦрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдпреЗ 0 рдХреЗ рдХрд░реАрдм рд╣реИрдВред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрднреА рд╕реЗрд▓реЗрд░реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд░реИрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░реНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛_рдореИрдХреНрд╕_рдЯреИрдХреНрд╕_рдкрд░_рдЪрд╛рдЗрд▓реНрдб рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓ рджреА рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╛рдХреА рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдВрддрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдзрдиреНрдпрд╡рд╛рдж!

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 1000_max_tasks_per_child рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП @Skowt

рдХрд▓ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ "рдкреНрд░реАрдлрд╝реЙрд░реНрдХ" рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред

@arielcamino рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдерд╛ред рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╣рдореЗрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рдорд┐рд▓ рдкрд╛рдпрд╛ рд╣реИред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╣рдореЗрдВ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдмрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рд╣реИрд▓реЛ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдо рдЕрдЬрд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рд▓реАрдХ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ == 4.4.7 (рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдХрднреА-рдХрднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрдЪрд╛рдирдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реАрдХ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ --concurrency=1 рдФрд░ рдзреНрд╡рдЬ --max-tasks-per-child=100 рд╕рд╛рде рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рддрдм рддрдХ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕реЗ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд▓реАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред

celery_leak

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╣реИрд▓реЛ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдо рдЕрдЬрд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рд▓реАрдХ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ == 4.4.7 (рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдХрднреА-рдХрднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрдЪрд╛рдирдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реАрдХ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ --concurrency=1 рдФрд░ рдзреНрд╡рдЬ --max-tasks-per-child=100 рд╕рд╛рде рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рддрдм рддрдХ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕реЗ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд▓реАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред

celery_leak

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд╣рд┐рдд рдореЗрдВ рд╣реИ рдЬреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдФрд░ рд╣реЗрд▓реНрдк рдЯреНрд░реИрдХ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рдлрд┐рдХреНрд╕ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд░рд┐рд╕рд╛рд╡ рдХреЗ рдореВрд▓ рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред

рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдкрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЧрдпрд╛, рдореИрдВрдиреЗ рдХреБрдЫ рдЙрдкрдХрд░рдг рдЪрд▓рд╛рдП рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдереЛрдбрд╝реЗ рдЗрд╕реЗ рдиреАрдЪреЗ рдмрддрд╛рддреА рд╣реИ, рд╡рд╣ рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд▓рд┐рдпрд╛ рдерд╛, рдЬреЛ рд╣рд░ рджреЛ рдпрд╛ рджреЛ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдореЗрдореЛрд░реА рдмрдврд╝рд╛рдиреЗ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрд╣ рджреЛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╢реАрд░реНрд╖ 10 рд╣реИ:

/usr/local/lib/python3.8/site-packages/celery/events/dispatcher.py:148: size=259 KiB (+218 KiB), count=1026 (+867), average=259 B
/usr/local/lib/python3.8/site-packages/kombu/messaging.py:178: size=231 KiB (+194 KiB), count=1056 (+888), average=224 B
/usr/local/lib/python3.8/site-packages/amqp/connection.py:513: size=217 KiB (+182 KiB), count=703 (+591), average=316 B
/usr/local/lib/python3.8/site-packages/celery/events/dispatcher.py:214: size=207 KiB (+174 KiB), count=704 (+592), average=302 B
/usr/local/lib/python3.8/site-packages/kombu/messaging.py:200: size=204 KiB (+171 KiB), count=704 (+592), average=296 B
/usr/local/lib/python3.8/site-packages/amqp/transport.py:253: size=203 KiB (+171 KiB), count=703 (+591), average=296 B
/usr/local/lib/python3.8/site-packages/amqp/connection.py:508: size=184 KiB (+154 KiB), count=703 (+591), average=268 B
/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py:445: size=182 KiB (+153 KiB), count=352 (+296), average=528 B
/usr/local/lib/python3.8/site-packages/amqp/channel.py:1758: size=169 KiB (+143 KiB), count=703 (+593), average=247 B
/usr/local/lib/python3.8/site-packages/kombu/asynchronous/hub.py:301: size=167 KiB (+140 KiB), count=351 (+295), average=486 B

рдореБрджреНрджрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ
рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрд╡рд╛рдЗрди рдХрд╛рд░реНрдп рдПрдХреНрд╕реЗрд╕ рдРрдк рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ
рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрд╛ рдЗрд╕рдХрд╛ рдирд┐рдкрдЯрд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛

--max-tasks-per-child=

рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рдерд╛

рд╣реИрд▓реЛ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдо рдЕрдЬрд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рд▓реАрдХ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ == 4.4.7 (рдЦрд░рдЧреЛрд╢ рдХреЗ рд╕рд╛рде) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдХрднреА-рдХрднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЕрдЪрд╛рдирдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реАрдХ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ --concurrency=1 рдФрд░ рдзреНрд╡рдЬ --max-tasks-per-child=100 рд╕рд╛рде рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рддрдм рддрдХ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕реЗ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд▓реАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред
celery_leak
рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд╣рд┐рдд рдореЗрдВ рд╣реИ рдЬреЛ рдкреНрд░реЛрдбрдХреНрд╢рди рдФрд░ рд╣реЗрд▓реНрдк рдЯреНрд░реИрдХ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рдлрд┐рдХреНрд╕ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд░рд┐рд╕рд╛рд╡ рдХреЗ рдореВрд▓ рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЧрд░ рдореИрдВ --max-tasks-per-child рдЬреЛрдбрд╝реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП --autoscale=5,2 --max-tasks-per-child=40 рддрд░реНрдХ рдЗрд╕ рддрд░рд╣ рд╣реИ

Screenshot 2020-08-13 at 2 26 13 PM

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рдЙрдиреНрдирдпрди рдиреЗ рдореЗрдореЛрд░реА рд░рд┐рд╕рд╛рд╡ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдореИрдВ рдХреБрд▓ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧ рдиреЗ рд░рд┐рд╕рд╛рд╡ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рдХрд┐ рдХреМрди рд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреА Django рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрди рд╕рднреА рдорд╛рдиреЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

CELERY_CONCURRENCY = CELERY_WORKER_CONCURRENCY = 1
CELERY_MAX_TASKS_PER_CHILD = CELERY_WORKER_MAX_TASKS_PER_CHILD = 1

рдпрд╣ рдЙрд╕ рд░рд┐рд╕рд╛рд╡ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдкреВрд▓ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЯреНрд░реЗрд╕рдореИрд▓реЛрдХ рдиреЗ рдЗрд╡реЗрдВрдЯ рдХреЛ рд▓реАрдХ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдИрд╡реЗрдВрдЯ рдФрд░ рд╣рдорд╛рд░реЗ рдлреВрд▓реЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЕрдм рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рд╕рд╛рд╡ рдЕрдм рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдФрд░ рд╢реЗрдпрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рджреВрдВрдЧрд╛ рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдоред

рд░рд┐рд╕рд╛рд╡ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрд░реЛрдд рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд╛рд░реНрдп рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдлреВрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ

рдХрд┐рд╕реА рд╕реЗ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЪреБрдкрдЪрд╛рдк рджреЗрдЦ рд░рд╣рд╛ рд╣реИ (рдФрд░ рдХрднреА рднреА рдЗрд╕рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдХрднреА рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ) рд╕реЗ рдЙрдкрд╛рдЦреНрдпрд╛рдирд╛рддреНрдордХ рдбрд╛рдЯрдкреЙрдЗрдВрдЯ: рдореИрдВ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдЕрдЬрд╡рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЙрди-рдЗрдВрдмрд╕реНрдЯреИрдВрдЯрд┐рдпрд▓ рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд╕рд╛рде) рд╕реЗ рдЕрд╡рдЧрдд рд╣реВрдВ, рдЬрд╣рд╛рдВ рдКрдкрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдерд╛ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХреЛ рд░реЛрдХрдирд╛ред рдХреЗрд╡рд▓ рджреВрд╕рд░реЗ рд╣рд╛рде рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ _ob рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдПрдХ рд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджрд╛ рдерд╛ (AFAIK рдпрд╣ rabbitmq рдерд╛, рдЬрд┐рдпрд╡реЗрдВрдЯ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЦрд░рдЧреЛрд╢ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рд╕ рд╕реНрдЯреИрдХ рдХреЛ рд╣рдо рдЗрд╕ рд░рд┐рд╕рд╛рд╡ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:

  • рд╕реЗрд▓реЗрд░реА (рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг): рдпрд╛ рддреЛ рдкреНрд░реАрдлрд╝реЙрд░реНрдХ рдпрд╛ рдЬрд┐рдпреЛрд╡реЗрдВрдЯ рдкреВрд▓, рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд▓реАрдХ рдкреИрдЯрд░реНрди рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
  • рдЦрд░рдЧреЛрд╢рдмреАрдо (рдмрд╛рджрд╛рдордХрдк рд╕рд╛рд╕)
  • рдлреВрд▓

рд╣рдордиреЗ рд▓реАрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдФрд░ рдХреЛрдИ рднреА рд▓реАрдХ рдирд╣реАрдВ рдкрд╛рдпрд╛ рд╣реИ, рдЗрд╕реАрд▓рд┐рдП рдЕрдЬрд╡рд╛рдЗрди рдХреА рддрд░рдл рдХреБрдЫ рд╣реЛрдиреЗ рдХрд╛ рдореЗрд░рд╛ рд╕рдВрджреЗрд╣ рд╣реИред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рд╢реНрд░рдорд┐рдХ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐, рдПрдХ рдмрд╛рд░ рд▓реАрдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдлреВрд▓ рдкрд░ рдСрдлрд╝рд▓рд╛рдЗрди рднреА рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдЕрдХреНрд╖рдо рдлреВрд▓реЛрдВ рдФрд░ рдХрд╛рд░реНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рд░рдЦреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд░рд┐рд╕рд╛рд╡ рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

рдореИрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╕реНрдЯреИрдХ рдХрд╛ рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕реЗрд▓реЗрд░реА рдХрд╛ рдЕрддреАрдд рдореЗрдВ рдЧрдВрднреАрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдореГрддрд┐ рд▓реАрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдореБрджреНрджреЗ рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдпрд╛ рддреЛ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ ...

  • рдПрдХ рдмрд╛рд░ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛, рдпрд╛
  • рдХреБрдЫ рдЕрдЦрдВрдб рдЬреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рднреАрддрд░ рдорд▓реНрдЯреА-рдХреЛрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ

рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдХреА рд╕рдВрдЧрд╛рдордирд╛, рдХрд╛рд░реНрдп рдкрдВрдХреНрддрд┐рдмрджреНрдзрддрд╛ рдФрд░ рдмрд╛рд▓ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо рд╕рднреА рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реНрдореГрддрд┐-рднреВрдЦ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛред

рдЕрдЬрд╡рд╛рдЗрди рдореЗрдВ рднрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЛрдЧ рднрд╛рд░реА-рднрд░рдХрдо рд╕реАрдкреАрдпреВ-рдмрд╛рдЙрдВрдб рдФрд░ рдореЗрдореЛрд░реА-рдмрд╛рдЙрдВрдб рдкреНрд░реЛрд╕реЗрд╕ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд╣рдо рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╕реЗ рджреЛрдиреЛрдВ max-tasks-per-child рдФрд░ рд╕рдВрдЧреЛрд╖реНрдареА рдХреЛ 1 рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдореЗрдореЛрд░реА рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо Redis рдХреЛ рдмреНрд░реЛрдХрд░ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдмреИрдХреЗрдВрдб рджреЛрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ, рдЬрдм RabbitMQ рдХреЛ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ max-tasks-per-child рд╕реЗ 1 "

рд╣рдо рдЬреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЕрд▓рдЧ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдПрдХ рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрдИ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмреЗрдХрд╛рд░ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рд▓реАрдХ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдХреЛ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдорд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдкрд╣рд▓реЗ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдореЗрдореЛрд░реА рдЪрд╛рд░реНрдЯ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд░реНрдХрд░ рджреНрд╡рд╛рд░рд╛ рд╢реЗрдбреНрдпреВрд▓ рдкрд░ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдореЗрдореЛрд░реА рдЪрд╛рд░реНрдЯ рдХреЛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдПрдХ рд╕реНрдХреНрд╡рд╛рдпрд░ рд╡реЗрд╡ рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдордЧреНрд░ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрдард╛рддрд╛ рд╣реИред
Screenshot 2020-08-14 at 20 42 24

рдореИрдВ рдЕрдкрдиреЗ рд░реЛрдбрдореИрдк рдкрд░ рдЕрдЬрд╡рд╛рдЗрди рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдбрд╛рд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЬрдм рд╣рдо рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рддреЛ рдореИрдВ рдореЗрдореЛрд░реА рдбрдВрдк рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд╕рд╛рдЭрд╛ рдХрд░реВрдБрдЧрд╛ред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдлреВрд▓ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ (рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдп рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛) рдиреЗ рд░рд┐рд╕рд╛рд╡ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕ рд╕рдордп рдЬрдм рдордЬрджреВрд░ рдиреЗ рд▓реАрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рдореИрдВрдиреЗ рдлреВрд▓ рдореЗрдВ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реЗрд▓реЗрд░рд┐рдПрд╡ рд╣рдореЗрд╢рд╛ рдХрд╛рдлреА рд╡реНрдпрд╕реНрдд рджрд┐рдЦрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрд╕рд╛рди рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЧреБрдЬрд░ рдЧрдпрд╛ рдФрд░ рдлреВрд▓реЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдЙрд╕ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИред

рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдЕрдЬрд╡рд╛рдЗрди рдХрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдлреВрд▓ рд╣реИ?

@ рдпреБрд╡реАрдкреА рдлреВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рд╕рд╛рд╡ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рдЕрдЬрд╡рд╛рдЗрди) рдкрд░ рд╣реЛрддрд╛ рд╣реИ

@ рдпреБрд╡реАрдкреА рдлреВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рд╕рд╛рд╡ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рдЕрдЬрд╡рд╛рдЗрди) рдкрд░ рд╣реЛрддрд╛ рд╣реИ

рдХрд╛рдлреА рдЙрдЪрд┐рддред рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рд╕реЗрд▓реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реЗрдбрд┐рд╕ рдФрд░ рдлреНрд▓рд╛рд╡рд░ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рднреА рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдк рдореБрдЭрд╕реЗ рдХреБрдЫ рднреА рдорд╛рдВрдЧ рд╕рдХрддреЗ рд╣реИрдВ?

@ рддрд╛рд╡реАрдЬрд╝ рдлреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВред рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╡рд┐рдХрд▓рд╛рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@ рддрд╛рд╡реАрдЬрд╝ рдлреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВред рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╡рд┐рдХрд▓рд╛рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреА рдЬрдбрд╝ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдЕрдЬрд╡рд╛рдЗрди рдпрд╛ рдЖрдкрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрдХрд╛рдИ рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХреГрдкрдпрд╛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреА рдЬрдбрд╝ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдЕрдЬрд╡рд╛рдЗрди рдпрд╛ рдЖрдкрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрдХрд╛рдИ рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдпрд╣рд╛рдБ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИрдВ , рднрд▓реЗ рд╣реА рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХрд░реНрддреНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рдХрд╛рд░реНрдп рд╕рдВрд╕рд╛рдзрд┐рдд рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рдЗрдХрд╛рдИ рдпрд╛ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдкрдиреА рдХреЗ рдЖрдИрдкреА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ред рдорд╛рдлрд╝ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдорд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ рд░реЛрдбрдореИрдк рдкрд░ рдЙрддреНрдкрд╛рджрди рд╢реНрд░рдорд┐рдХреЛрдВ рдкрд░ рдореЗрдореЛрд░реА рдбрдВрдк рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдЙрдВрдЯрд░ рдФрд░ рд░реЗрдлрд░реА рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред

@jsynowiec рдпрджрд┐ рдЖрдк рдЗрд╕реЗ 5.0.0 рдЬреАрдП (рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП # 6266 рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ) рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛ред

рдПрдХ рдмрд╛рд░ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдмрдЧрдлрд┐рдХреНрд╕ рд▓реИрдВрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ 4.x рдкрд░ рднреА рд╡рд╛рдкрд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@thedrow 5.0 рдХреЗ GA рдХреА рдпреЛрдЬрдирд╛ рдХрдм рдмрдирд╛рдИ рдЧрдИ рд╣реИ? рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА Py3 to рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП Celery 4 рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░рд┐рд▓реАрдЬ рдЕрд╡рд░реЛрдзрдХ рд╣реИ рдФрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВред
рдЬрд╡рд╛рдм рдмрд╣реБрдд рдЬрд▓реНрдж рд╣реИред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдлреВрд▓ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рд░рд┐рд╕рд╛рд╡ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЕрдм рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░рд┐рд╕рд╛рд╡ рдХреЗ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рддрдВрддреНрд░ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдмрдЧ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЕрдВрджрд╛рдЬрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╣рдо рдлреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ --events рдмрд┐рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд╣рдо рдирд┐рд░рдВрддрд░ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реИрдВред

рдЬрд╡рд╛рдм рдмрд╣реБрдд рдЬрд▓реНрдж рд╣реИред

рдореИрдВ рдЙрддреНрдкрд╛рджрди рдХрд░реНрдорд┐рдпреЛрдВ рд╕реЗ рдореЗрдореЛрд░реА рдбрдВрдк рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рдлреНрддреЛрдВ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ py2 рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдкрд░ рднреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рд╣реИ-> py3 рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рдЗрд╕ рдмрд╛рдд рдХреА рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдкрд░ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ред рдПрдХ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдлреВрд▓, рд╢рд╛рдпрдж рдПрдХ рджрд▓рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░реИрдмрд┐рдЯрдХреНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред GitHub рдкрд░, рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рдЕрдиреНрдп рдПрдХ (рдЬреЛ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ) рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░реВрдЯ рдкрд░, рд╡реЗ рд╡рд╣реА рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕реА рдХреЛрдб рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ ЁЯд╖ЁЯП╝ рдЬрд╛рдирддрд╛ рд╣реИред рдЬреИрд╕реЗ trail рд╕рдмрдЯреБрдХ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдирд╛ рдФрд░ AsyncResult of рдХрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд▓реАрдХ рдХрд░рдирд╛

@thedrow @auvipy рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдХрд┐ рд╣рдо рдЕрдм рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рдореЗрдореЛрд░реА рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Python3 рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддреЗ рд╕рдордп рд╣рдо рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЬреЛ рдХрд┐ https://github.com/celery/celery/issues/4470 рдпрд╛ https://github.com/celery/celery/issues/5359 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдкрд░ рд╣рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ join_native рдХреЙрд▓ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рд▓рдЯрдХрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рдореВрд╣ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рддреНрд╡рд░рд┐рдд рд╕реНрдЯреНрд░реЗрд╕ рдЗрд╕рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкрдврд╝рдиреЗ рдкрд░ рд▓рдЯрдХрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХрд░реНрдиреЗрд▓ / рд▓рд┐рдмрд╛рд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдореЗрдореЛрд░реА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП join рдкреВрд▓ рдХрд░рддреЗ рд╣реБрдП рд╕рд╛рджреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ - рдЕрдВрдд рдореЗрдВ _some_ data: celery-memtrace-1.tar.xz , рд╣рд╕реНрддрд╛рдХреНрд╖рд░ , рдореЗрд░реА рдХреБрдВрдЬреА ред

рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ ~ 16 рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж 8 рд╢реНрд░рдорд┐рдХреЛрдВ рд╕реЗ tracemalloc рд▓реЙрдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдЧреНрд░рд╛рдл рдФрд░ рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА (рд╕реЗрд▓реЗрд░реА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдмреИрдирд░ рд╕рд╣рд┐рдд)ред

рдореИрдВрдиреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд┐рд╕реА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордп рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХ) рд╣рдорд╛рд░рд╛ рдХреЛрдб рд╕реВрдЪреА рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдерд╛, рдЦ) рдпрд╣ SQLAlchemy рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрдЬреАрдм рдмрд╛рддрдЪреАрдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реИ, рдпрд╛ рдпрд╣ рдПрдХ рд╕рдВрдпреЛрдЬрди / рдмрд╛рддрдЪреАрдд рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдг рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рддреЛ рдХреГрдкрдпрд╛ рдкреВрдЫреЗрдВред рд╣рдо рдЗрд╕ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрди 8 рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЪрд▓рд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЕрдзрд┐рдХ / рдмреЗрд╣рддрд░ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

EDIT : рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕ рдереНрд░реЗрдб рдХреА

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд▓реАрдХ рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ рдЦреБрдж рдХреЛ рдЦреЛрджрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
https://reliability.substack.com/p/run-python-servers-more-efficiently

рд╣рдо рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╕реНрдореГрддрд┐-рд▓реАрдХ рдореВрд▓ рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднреАрддрд░ рд╣реА рдирд╣реАрдВ рд╣реИред рдХреЛрдИ рдФрд░ рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЬрд╡рд╛рдЗрди рдореЗрдВ рд╕реНрдореГрддрд┐-рд▓реАрдХ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ?

@ErrorInPersona рд╣рд╛рдБ, рд╣рдо рдПрдХ рдЬреИрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ OOM рдкрдВрдЬреАрдХреГрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@drbig рдХреЛрдИ рдХрд┐рд╕реНрдордд?

Screenshot_2020-11-17_12-56-28

рдареАрдХ рд╣реИ, "рдЧреНрд░реАрди рд╡рди" рдХреЛ рджреЗрдЦреЗрдВ, рдордВрдЬрд┐рд▓ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ ... рддреЛ "рдпрдк рдХреА рддреНрд╡рд░рд┐рдд рдкреБрд╖реНрдЯрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ" рдореЗрд░реА рддрд░рдл рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирд╣реАрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рдЙрд╕ рд▓рд┐рдВрдХ рдХреЛ рд╕реНрдХрд┐рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ @thedrow рдиреЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореЗрд░реА рдЯреВ-рдбреВ рд╕реВрдЪреА (рдПрдХ рдЕрдерд╛рд╣ рдЧрдбреНрдврд╛) рдореЗрдВ рдЕрдм - try running some workers with jemalloc forced in , рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╣ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛, _eventually_ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

VivianSnow picture VivianSnow  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

steinliber picture steinliber  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

synthead picture synthead  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jheld picture jheld  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aTylerRice picture aTylerRice  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ