From a4b4d667856208e15ac32fbb90cfecc891b916b0 Mon Sep 17 00:00:00 2001 From: Aleksey Lobanov Date: Tue, 2 Oct 2018 01:00:37 +0300 Subject: [PATCH] Fixed missprint --- .../index.html | 2 +- .../index.html.gz | Bin 5094 -> 5089 bytes sitemap.xml | 8 ++++---- sitemap.xml.gz | Bin 811 -> 812 bytes 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/posts/dolgie-soobshcheniia-v-rabbitmq/index.html b/posts/dolgie-soobshcheniia-v-rabbitmq/index.html index 9084f0c..2d98fb4 100644 --- a/posts/dolgie-soobshcheniia-v-rabbitmq/index.html +++ b/posts/dolgie-soobshcheniia-v-rabbitmq/index.html @@ -1,6 +1,6 @@ Долгие сообщения в RabbitMQ
  1. Долгие сообщения в RabbitMQ

    Предположим, что у вас появилась перекодировать фильмы на вашем медиасервере и вы решили использовать production-ready решение для хранения заданий. Вы взяли RabbitMQ для управления очередями сообщений и Python для их обработке и запуска конвертирования. Но почему-то сообщения обрабатываются нестабильно, клиент падает без всяких видимых причин. Попробуем понять почему такое может быть.

    Возьмём готовый код из официального туториала RabbitMQ и немного его модифицируем, чтобы он обрабатывал сообщения за различное время.

    Producer

    #!/usr/bin/python
    +        
    1. Долгие сообщения в RabbitMQ

      Предположим, что у вас появилось желание перекодировать фильмы на вашем медиасервере, и вы решили использовать production-ready решение для хранения заданий. Вы взяли RabbitMQ для управления очередями сообщений и Python для их обработки. Но почему-то сообщения обрабатываются нестабильно, клиент падает без всяких видимых причин. Попробуем понять почему такое может быть.

      Возьмём готовый код из официального туториала RabbitMQ и немного его модифицируем, чтобы он обрабатывал сообщения за различное время.

      Producer

      #!/usr/bin/python
       # -*- coding: utf-8 -*-
       
       __author__ = "Aleksey Lobanov"
      diff --git a/posts/dolgie-soobshcheniia-v-rabbitmq/index.html.gz b/posts/dolgie-soobshcheniia-v-rabbitmq/index.html.gz
      index e640debc6c7b03d1e92f91f42da6858228b52242..3d2fc2038828b6dbd908b42f82e8518b8397ba57 100644
      GIT binary patch
      literal 5089
      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
      IbT(`N01A@}wEzGB
      
      diff --git a/sitemap.xml b/sitemap.xml
      index c7f3cfb..e24a9b9 100644
      --- a/sitemap.xml
      +++ b/sitemap.xml
      @@ -5,28 +5,28 @@ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
       
       
       https://likemath.ru/
      -2018-10-02T00:51:13-00:00
      +2018-10-02T00:59:56-00:00
       daily
       0.5
       
       
       
       https://likemath.ru/archives.html
      -2018-10-02T00:51:13-00:00
      +2018-10-02T00:59:56-00:00
       daily
       0.5
       
       
       
       https://likemath.ru/tags.html
      -2018-10-02T00:51:13-00:00
      +2018-10-02T00:59:56-00:00
       daily
       0.5
       
       
       
       https://likemath.ru/categories.html
      -2018-10-02T00:51:13-00:00
      +2018-10-02T00:59:56-00:00
       daily
       0.5
       
      diff --git a/sitemap.xml.gz b/sitemap.xml.gz
      index 479386be0b55f3fee06b81d2876ded38535b3c2e..91c05d53b14d6aad0f3862cbe4abbdab9d352859 100644
      GIT binary patch
      literal 812
      zcmV+{1JnE;iwFP!000021J#+)a-uL4hVOj}$J?EdAgC>4?F)3TwikOFAcZU;p*aD?
      zr{4qBowi%-^kRjbamJXO$j9%=$sgR_A4)ZEgav8z-NN_SVlH%IQmM1MMeUx*&EkGH
      z+tyZraB~dS5FJ3?Epq3oh|>Lj@9hK6*o-b2^Xbp;4?mJzl$=Nnj_X7$W*8qq-}zt?
      z?)odenhw(8PzC*$yu<-LbyDWt&c6_QZhHqv@xmSMm#($g&H9_gTUI97bu$5{Dp_EJ
      z%RO7uE$v2doP#S(x?3{;hWL!INZ-f2{stRz*ERn8VUCO0uxAaxd
      zY+G4rtaR;;d8;k`^J%uFJ|!&-T(moI4w4v+2w}YZgv)A+86QeZNcPWe|n_m{q#lRuJ2y+K{HjHmDxIX)QnY8_s~_ShIsE
      zNKPtYn-<@&gGeP&_|7g9;fy1(GT8usIPRi6*}0aM5|SYs@^`^oM#1$xXWRKDQMmSk
      zt$VkBkH^{hIwEQ%?69iuH}0`$TbCRCsh#)7!NkK5#dh~u7JRBH+EKn_=TwukBTO#l
      z;u}A9eYmqFXs4`ToT=f%+WWn9gcO|oQbw{JJQp5n
      zgkx*CKkQ|iiBF!qyfO3FhkQ~}yD3-f|H9^UpqaT)bAqvx5!$k9r!3$3LBo_qG!>rA
      q!PGVpQ^n*pZqAl+B?=IdC=+vSn(@jwefgJaH~S6a@?_A~8UO&_9FRr;
      
      literal 811
      zcmV+`1JwK~Y7V{1wqmQ6B}Xd*
      z=IOh3pp(*=Ob*5F3^NF6g+KqSR=-UAu&?xdD;+3n?iYN?7ISG*n<-EtQ$t;=b^7^gqJJ$_FMSqY*Hcwthxm|=VbednW1
      zh3~KQW;!U3LpAhY@)`&9*h$&)>--b3r}lCW8D6-<{nWJ6@Ne
      zTsvi*^6iE#*D?M5X%^F-e5^C!_sfF`O5g=OO4FJ&h)8e+1n}<=j9+A1S$`U7`6Izmk$OP6a
      z!o$^j&^MjXA$#Jt;|e_hy}B8M4*2NMMwEp;6j{#%^hoa0VpDnjKC-
      za#BmTZSf5|h|&s$@9Z*>-g=T~n-B1>#$A+0JJ-@mK{{kZ{w{by6kgwRww+&+rEf3T
      zy0iUzJkHM75!qc0DLDD1j9%};8a^|6*T*}a4yT-gr&IT&e`Pd07anS?
      z#@2AR->EE@A3S;a!^~eF@>wh6r(CiB3!Bq{=JrC(3CB)GXsf!NvV5lp4O14;)_5`p
      p+qhIt6;m|0IXfz}EI}%wZ6b`_j#tL%>%UZ+*)M(}lFHT^006(#jaC2v