-
Notifications
You must be signed in to change notification settings - Fork 0
/
index10.html
612 lines (607 loc) · 47.9 KB
/
index10.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<title>IMDagger: Дневник</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Блог IMDagger: IT и жизнь" />
<meta name="keywords" content="python,lisp,scheme,racket,emacs,blender,программирование,моделирование,lua,c++,c,js,java,git,bazaar" />
<meta name="author" content="Alex Moiseenko (IMDagger)" />
<meta name="robots" content="noindex"/>
<!-- Open Graph -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" />
<link rel="shortcut icon" href="http://imdagger.github.io/favicon.ico" />
<link rel="stylesheet" href="/theme/css/html4css1.css" />
<link rel="stylesheet" href="/theme/css/style.css" />
<link rel="stylesheet" href="/theme/css/pygment.css" />
<link rel="stylesheet" href="/theme/css/math.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML,http://imdagger.github.io/theme/js/math.js"></script>
<script src="http://s3.amazonaws.com/nwapi/nwmatcher/nwmatcher-1.2.5-min.js"></script>
<!--[if (gte IE 6)&(lte IE 8)]>
<script type="text/javascript" src="/theme/js/selectivizr-min.js"></script>
<noscript><link rel="stylesheet" href="[fallback css]" /></noscript>
<![endif]-->
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link href="http://imdagger.github.io/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="IMDagger Atom-лента" />
</head>
<body>
<div class="row page-head">
<div class="row page-head-status page-head-status-top"><div class="col-sm-12 b-status mine"><p><i></i><a href="#" title="настроение" class="b-consistent-link"><b>Продать кому-то что-то всегда на деле сложнее, чем кажется</b></a></p></div></div>
<div class="col-sm-2 page-left">
<a href="#">
<img src="http://upics.yandex.ru/22199227/normal" ilo-full-src="http://upics.yandex.ru/22199227/normal">
</a>
</div>
<div class="col-sm-10 all-posts">
<div class="title-container">
<h1><b><a href="http://imdagger.github.io" class="fn nickname">IMDagger</a></b></h1>
</div>
<div class="title-menu">
<ul class="nav nav-tabs" role="tablist">
<li class="active">
<a href="#">Дневник</a>
</li>
<li><a href="http://fotki.yandex.ru/users/imdagger">Фотки</a></li>
<li><a href="http://imdagger.github.io/pages/o-sebe.html">О себе</a></li>
<li><a href="http://imdagger.github.io/pages/rss-lenta.html">RSS-лента</a></li>
</ul>
</div>
</div>
</div>
<div class="row page-body">
<div class="col-sm-2 page-left">
<div class="row widget widget-photo">
<a href="posts/2011/08/07/aga-popalsia/" class="b-user-photo__link"><img class="b-user-photo__img" src=" http://img-fotki.yandex.ru/get/5409/22199227.a/0_625fc_e780ccc7_L
?log_nocount=64720402854"></a>
</div><div class="row widget">
<div class="widget-content b-user-info">
<div class="widget__body">
<div class="widget-user-info__age">
<i class="widget-user-info__sex widget-user-info__sex_type_"></i> 27 лет
</div>
<div class="widget-user-info__place">
<a href="#">Гомель</a>, <a href="#">Беларусь</a> </div>
<ul class="contacts">
<li class="contact contact-type-email"><i></i><a href="mailto:[email protected]">[email protected]</a></li>
<li class="contact contact-type-ya-online"><i></i>[email protected]</li>
<li class="contact contact-type-icq"><i></i>350395088</li>
</ul>
</div>
</div>
</div>
<div class="row widget">
<div class="widget-content">
<div class="widget__title">
<div class="widget__title-link">Метрика</div>
</div>
<div class="widget__body">
<div class="widget-line">
<!-- noindex -->
<!-- googleoff: index -->
<div class="widget-entry">
<!-- Yandex.Metrika informer --><a href="https://metrika.yandex.ru/stat/?id=25746494&from=informer" target="_blank" rel="nofollow"><img src="//bs.yandex.ru/informer/25746494/3_1_FFFFFFFF_EFEFEFFF_0_pageviews" style="width:88px; height:31px; border:0;" alt="Яндекс.Метрика" title="Яндекс.Метрика: данные за сегодня (просмотры, визиты и уникальные посетители)" onclick="try{Ya.Metrika.informer({i:this,id:25746494,lang:'ru'});return false}catch(e){}"/></a><!-- /Yandex.Metrika informer --><!-- Yandex.Metrika counter --><script type="text/javascript">(function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter25746494 = new Ya.Metrika({id:25746494, clickmap:true, trackLinks:true, accurateTrackBounce:true}); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks");</script><noscript><div><img src="//mc.yandex.ru/watch/25746494" style="position:absolute; left:-9999px;" alt="" /></div></noscript><!-- /Yandex.Metrika counter -->
<!-- googleon: index -->
<!-- /noindex -->
</div>
</div>
</div>
</div>
</div><div class="row widget">
<div class="widget-content">
<div class="widget__title">
<div class="widget__title-link">Популярное в дневнике</div>
</div>
<div class="widget__body">
<div class="widget-line">
<div class="widget-entry">
<div class="widget-day__title">25 июня</div>
<div class="widget-entry clearfix">
<div class="widget-entry__item">
<div class="widget-entry__title">
<a href="#" class="h-link"> Висцеральная теория сна выглядит стр…</a>
</div>
<div class="widget-entry__info">2 ответа</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="col-sm-10 all-posts">
<div class="row b-post-filter">
<span class="pull-right">
записи по
<div class="btn-group">
<span type="button" class="pseudo-link" data-toggle="dropdown">месяцам</span>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li><a rel="nofollow" href="#" class="h-link">Нулябрь</a><li>
<li><a rel="nofollow" href="#" class="h-link">Первябрь</a><li>
</ul>
</div> ·
<div class="btn-group">
<span type="button" class="pseudo-link" data-toggle="dropdown">меткам</span>
<ul class="dropdown-menu dropdown-menu-right" role="menu"> <li> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/emacs.html" class="h-link">emacs</a> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/javascript.html" class="h-link">javascript</a> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/icfpc.html" class="h-link">icfpc</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/blender.html" class="h-link">blender</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/ia.html" class="h-link">Я</a> </li> <li> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/google.html" class="h-link">google</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/zhizn.html" class="h-link">жизнь</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/oshibka.html" class="h-link">ошибка</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/rabota.html" class="h-link">работа</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/python.html" class="h-link">python</a> </li> <li> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/java.html" class="h-link">java</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/bredni.html" class="h-link">бредни</a> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/racket.html" class="h-link">racket</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/programmirovanie.html" class="h-link">программирование</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/bge.html" class="h-link">bge</a> </li> <li> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/eda.html" class="h-link">еда</a> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/linux.html" class="h-link">linux</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/nabrosok.html" class="h-link">набросок</a> <a rel="nofollow" class="tag-1" href="http://imdagger.github.io/tag/radost.html" class="h-link">радость</a> <a rel="nofollow" class="tag-2" href="http://imdagger.github.io/tag/iandeks.html" class="h-link">Яндекс</a> </li> </ul>
</div> ·
<div class="btn-group">
<span type="button" class="pseudo-link" data-toggle="dropdown">типам</span>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li><a rel="nofollow" href="http://imdagger.github.io/category/description.html" class="h-link">обращение</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/friend.html" class="h-link">дружба</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/join.html" class="h-link">клубы</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/link.html" class="h-link">ссылки</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/mood.html" class="h-link">настроение</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/photo.html" class="h-link">фото</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/text.html" class="h-link">текст</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/video.html" class="h-link">видео</a><li>
<li><a rel="nofollow" href="http://imdagger.github.io/category/wishlist.html" class="h-link"></a><li>
</ul>
</div>
</span>
</div>
<div class="row b-post">
<div class="panel panel-text">
<div class="panel-heading b-post-type b-post-type-text">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
написал <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/10/03/urn:ya.ru:post/22199227/1873/" >
3 октября 2013 года, 04:34
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/encoding.html">encoding</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/sait.html">сайт</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/gzip.html">gzip</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/identity.html">identity</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/requests.html">requests</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/http.html">HTTP</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/python.html">python</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/osobennost.html">особенность</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/10/03/urn:ya.ru:post/22199227/1873/"></a> </div>
<div class="row post-body">
<div class="b-text">
<p>Наткнулся на криво настроенный сайт, но я думаю он не единственный
такой и с него мне тоже нужно тащить страницы. Он возвращает заголовок
Content-Encoding равный gzip, а сами данные не ужимает, а оставляет как
есть. Естественно библиотеке requests от этого сносит башню с ошибкой:</p>
<div class="highlight"><pre> File <span class="pgcss-nb">".../requests/packages/urllib3/response.py"</span>, line <span class="pgcss-m">225</span>, in <span class="pgcss-n">stream</span>
<span class="pgcss-n">data</span> <span class="pgcss-o">=</span> <span class="pgcss-bp">self</span><span class="pgcss-o">.</span><span class="pgcss-n">read</span><span class="pgcss-p">(</span><span class="pgcss-n">amt</span><span class="pgcss-o">=</span><span class="pgcss-n">amt</span><span class="pgcss-p">,</span> <span class="pgcss-n">decode_content</span><span class="pgcss-o">=</span><span class="pgcss-n">decode_content</span><span class="pgcss-p">)</span>
File <span class="pgcss-nb">".../requests/packages/urllib3/response.py"</span>, line <span class="pgcss-m">193</span>, in <span class="pgcss-n">read</span>
<span class="pgcss-n">e</span><span class="pgcss-p">)</span>
<span class="pgcss-gr">requests.packages.urllib3.exceptions.DecodeError</span>: <span class="pgcss-n">('Received response with</span>
<span class="pgcss-x"> content-encoding: , but failed to decode it.', error('Error -3</span>
<span class="pgcss-x"> while decompressing: incorrect header check',))</span>
</pre></div>
<p>Но, т.к. я делаю обычный GET запрос и оставляю заговоловки на
усмотрение <em>requests</em>, то он не требует от сайта принудительного
text/html. Поэтому я добавил принудительный Accept-Encoding, что дало
положительный результат. Забываю всё время про него, т.к. без параметра
headers короче писать запрос.</p>
<div class="highlight"><pre><span class="pgcss-n">page</span> <span class="pgcss-o">=</span> <span class="pgcss-n">requests</span><span class="pgcss-o">.</span><span class="pgcss-n">get</span><span class="pgcss-p">(</span><span class="pgcss-n">resource</span><span class="pgcss-o">.</span><span class="pgcss-n">url</span><span class="pgcss-p">,</span> <span class="pgcss-n">stream</span><span class="pgcss-o">=</span><span class="pgcss-bp">True</span><span class="pgcss-p">,</span> <span class="pgcss-n">headers</span><span class="pgcss-o">=</span><span class="pgcss-p">{</span>
<span class="pgcss-s">'User-Agent'</span><span class="pgcss-p">:</span> <span class="pgcss-s">'Some bot'</span><span class="pgcss-p">,</span>
<span class="pgcss-s">'Accept-Encoding'</span><span class="pgcss-p">:</span> <span class="pgcss-s">'identity'</span><span class="pgcss-p">,</span>
<span class="pgcss-s">'Accept'</span><span class="pgcss-p">:</span> <span class="pgcss-s">'text/*'</span><span class="pgcss-p">,</span>
<span class="pgcss-p">})</span>
</pre></div>
<p>С указанием identity стало полегче, но на всякий случай есть ещё
<code class="code">
page.raw.stream(decode _content=False)</code>
, для тех, кому вообще
декодирование противопоказанно и точно нужны сырые данные. Только в
таком случае <code class="code">
stream=True</code>
для запроса обязателен.</p>
</div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-photo">
<div class="panel-heading b-post-type b-post-type-photo">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
вывесил фотки <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/10/03/banany/" >
3 октября 2013 года, 00:38
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/banany.html">бананы</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/eda.html">еда</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/10/03/banany/">Бананы</a> </div>
<div class="row post-body">
<div class="b-text">
<p class="row photo-item"><a class="reference external" href="http://fotki.yandex.ru/users/imdagger/view/605263"><img alt="ALIM3247.JPG" src="http://img-fotki.yandex.ru/get/9499/22199227.b/0_93c4f_2b5827ec_L" title="ALIM3247.JPG"/></a></p>
<p>Если это мама негра, то кто же папа? :/</p> </div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-link">
<div class="panel-heading b-post-type b-post-type-link">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
поделился ссылкой <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/28/elektronika/" >
28 сентября 2013 года, 13:54
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/elektronika.html">электроника</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/detali.html">детали</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/prodavets.html">продавец</a></span></div>
</noindex>
<div class="post-title">
<a class="h-link" href="http://ay.by/whoiswho.phtml?id=7724840">
<img class="b-ico" src="http://favicon.yandex.ru/favicon/ay.by?default=yaru-external">Электроника</a>
</div>
<div class="row post-body">
<div class="b-text">
<p> Отличный продавец электроники и радиодеталей! Мне нравится покупать
у него детали, т.к. не сильно далеко и плюс он всегда всё распишет,
посчитает и каждый заказ упакует в пакетик, и каждый набор снова в свой
мелкий пакетик. И добавляет бонус к покупке в виде дополнительных
деталей.</p>
</div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-text">
<div class="panel-heading b-post-type b-post-type-text">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
написал <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/27/urn:ya.ru:post/22199227/1870/" >
27 сентября 2013 года, 16:22
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/parametry.html">параметры</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/python.html">python</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/gunicorn.html">gunicorn</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/forma.html">форма</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/cgi.html">CGI</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/09/27/urn:ya.ru:post/22199227/1870/"></a> </div>
<div class="row post-body">
<div class="b-text">
<p>При использовании чистого Gunicorn для работы с формой из тела
запроса не стоит забывать указывать отдельно параметр файлового
указателя данных <code class="code">
env['wsgi.input']</code>
, даже не смотря на то, что
переменные среды передаются в этот же класс. Т.к. по умолчанию параметр
fp равен sys.stdin, т.е. чтение из стандартного потока ввода (в моём
случае терминала).</p>
<div class="highlight"><pre><span class="pgcss-kn">import</span> <span class="pgcss-nn">cgi</span>
<span class="pgcss-o">...</span>
<span class="pgcss-k">def</span> <span class="pgcss-nf">application</span><span class="pgcss-p">(</span><span class="pgcss-n">environ</span><span class="pgcss-p">,</span> <span class="pgcss-n">start_response</span><span class="pgcss-p">):</span>
<span class="pgcss-n">status</span> <span class="pgcss-o">=</span> <span class="pgcss-s">'200 OK'</span>
<span class="pgcss-n">fields</span> <span class="pgcss-o">=</span> <span class="pgcss-n">cgi</span><span class="pgcss-o">.</span><span class="pgcss-n">FieldStorage</span><span class="pgcss-p">(</span><span class="pgcss-n">fp</span><span class="pgcss-o">=</span><span class="pgcss-n">environ</span><span class="pgcss-p">[</span><span class="pgcss-s">'wsgi.input'</span><span class="pgcss-p">],</span> <span class="pgcss-n">environ</span><span class="pgcss-o">=</span><span class="pgcss-n">environ</span><span class="pgcss-p">)</span>
<span class="pgcss-o">...</span>
<span class="pgcss-k">return</span> <span class="pgcss-p">[</span><span class="pgcss-n">output</span><span class="pgcss-p">]</span>
</pre></div>
</div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-text">
<div class="panel-heading b-post-type b-post-type-text">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
написал <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/25/oshibka-obrabotki-filtratsii-otpravitelia-signala-v-celery/" >
25 сентября 2013 года, 23:38
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/celery.html">Celery</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/oshibka.html">ошибка</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/obrabotchik.html">обработчик</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/otpravka.html">отправка</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/python.html">python</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/signal.html">сигнал</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/09/25/oshibka-obrabotki-filtratsii-otpravitelia-signala-v-celery/">Ошибка обработки фильтрации отправителя сигнала в Celery</a> </div>
<div class="row post-body">
<div class="b-text">
<p>Похоже на то, что в обработчике сигналов в Celery есть проблемное
место. Код для сигналов <code class="code">
celery.utils.dispatch.signals</code>
взят из Django,
но в Django в роли sender выступает обычно класс, при чём этот класс в
единственном экземпляре. Т.к. веб сервер довольно таки самодостаточный
процесс. А вот в Celery явно выделяется обработчик запроса и
отправитель. При чём это могут быть два разных процесса, которые
естественно не разделяют интерпретатор, память и могут быть на разных
узлах.</p>
<p>Так вот обработчик для сигналов <code class="code">
task _sent</code>
вызывается на стороне
отправителя, а некоторые другие сигналы на принимающей стороне. Видимо
это стало причиной, что <em>sender</em> в Celery содержит строку — название
отправителя. Только вот две одинаковые строки не обязаны иметь
одинаковый <strong>id</strong>, особенно если они из разных модулей или получены
разными путями, ведь это два разных объекта. Но в документации к Celery
есть смутное
<a class="reference external" href="http://docs.celeryproject.org/en/latest/userguide/signals.html#basics">упоминание</a>,
что можно включить фильтр по sender при регистрации обработчика сигнала,
что в принципе не работает:</p>
<blockquote>
<p>Some signals also have a sender which you can filter by. For example
the
<a class="reference external" href="http://docs.celeryproject.org/en/latest/userguide/signals.html#std:signal-task_sent">task_sent</a>
signal uses the task name as a sender, so you can connect your
handler to be called only when tasks with name “tasks.add” has been
sent by providing the sender argument to
<a class="reference external" href="http://docs.celeryproject.org/en/latest/internals/reference/celery.utils.dispatch.signal.html#celery.utils.dispatch.signal.Signal.connect">connect</a>:</p>
<div class="highlight"><pre><span class="pgcss-nd">@task_sent.connect</span><span class="pgcss-p">(</span><span class="pgcss-n">sender</span><span class="pgcss-o">=</span><span class="pgcss-s">'tasks.add'</span><span class="pgcss-p">)</span>
<span class="pgcss-k">def</span> <span class="pgcss-nf">task_sent_handler</span><span class="pgcss-p">(</span><span class="pgcss-n">sender</span><span class="pgcss-o">=</span><span class="pgcss-bp">None</span><span class="pgcss-p">,</span> <span class="pgcss-n">task_id</span><span class="pgcss-o">=</span><span class="pgcss-bp">None</span><span class="pgcss-p">,</span> <span class="pgcss-n">task</span><span class="pgcss-o">=</span><span class="pgcss-bp">None</span><span class="pgcss-p">,</span> <span class="pgcss-n">args</span><span class="pgcss-o">=</span><span class="pgcss-bp">None</span><span class="pgcss-p">,</span>
<span class="pgcss-n">kwargs</span><span class="pgcss-o">=</span><span class="pgcss-bp">None</span><span class="pgcss-p">,</span> <span class="pgcss-o">**</span><span class="pgcss-n">kwds</span><span class="pgcss-p">):</span>
<span class="pgcss-k">print</span><span class="pgcss-p">(</span><span class="pgcss-s">'Got signal task_sent for task id </span><span class="pgcss-si">%s</span><span class="pgcss-s">'</span> <span class="pgcss-o">%</span> <span class="pgcss-p">(</span><span class="pgcss-n">task_id</span><span class="pgcss-p">,</span> <span class="pgcss-p">))</span>
</pre></div>
</blockquote>
<p>А не работает потому, что код диспетчера преобразует отправителя в
идентификатор, который затем и сравнивает:</p>
<div class="highlight"><pre><span class="pgcss-k">def</span> <span class="pgcss-nf">_make_id</span><span class="pgcss-p">(</span><span class="pgcss-n">target</span><span class="pgcss-p">):</span> <span class="pgcss-c"># pragma: no cover</span>
<span class="pgcss-k">if</span> <span class="pgcss-nb">hasattr</span><span class="pgcss-p">(</span><span class="pgcss-n">target</span><span class="pgcss-p">,</span> <span class="pgcss-s">'im_func'</span><span class="pgcss-p">):</span>
<span class="pgcss-k">return</span> <span class="pgcss-p">(</span><span class="pgcss-nb">id</span><span class="pgcss-p">(</span><span class="pgcss-n">target</span><span class="pgcss-o">.</span><span class="pgcss-n">im_self</span><span class="pgcss-p">),</span> <span class="pgcss-nb">id</span><span class="pgcss-p">(</span><span class="pgcss-n">target</span><span class="pgcss-o">.</span><span class="pgcss-n">im_func</span><span class="pgcss-p">))</span>
<span class="pgcss-k">return</span> <span class="pgcss-nb">id</span><span class="pgcss-p">(</span><span class="pgcss-n">target</span><span class="pgcss-p">)</span>
</pre></div>
<p>Эта функция используется для трансляции вида: отправитель →
уникальное число; только вот так нельзя делать из-за того, что для строк
это не очень работает. Для классов да, неплохо работает. Но Celery всё
же отправляет строку. Поэтому до решения проблемы лучше писать
обработчик вида:</p>
<div class="highlight"><pre><span class="pgcss-nd">@task_success.connect</span>
<span class="pgcss-k">def</span> <span class="pgcss-err">...</span>
<span class="pgcss-k">if</span> <span class="pgcss-n">sender</span> <span class="pgcss-o">==</span> <span class="pgcss-s">'...'</span><span class="pgcss-p">:</span>
<span class="pgcss-o">...</span>
</pre></div>
<p>Или похакать модуль и добавить туда hash вместо id, но это только
если тип хешируемый.</p>
</div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-photo">
<div class="panel-heading b-post-type b-post-type-photo">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
вывесил фотки <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/14/khend-meid-pitstsa/" title="изменено 14 сентября 2013 года в 02:22">
14 сентября 2013 года, 02:21
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/gotovliu.html">готовлю</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/zhizn.html">жизнь</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/eda.html">еда</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/pitstsa.html">пицца</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/09/14/khend-meid-pitstsa/">Хэнд мэйд пицца</a> </div>
<div class="row post-body">
<div class="b-text">
<p class="row photo-item"><a class="reference external" href="http://fotki.yandex.ru/users/imdagger/view/600801"><img alt="Хэнд мэйд пицца" src="http://img-fotki.yandex.ru/get/9355/22199227.b/0_92ae1_324c5273_L" title="Хэнд мэйд пицца"/></a></p>
<p>Точнее уже половина, вторую я съел. Моцарелла, оливки, чуть зелени и
кусочек огурца для меня, колбасы немножко. Тонкая, правда начинки
положил как для себя любимого :)</p> </div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-text">
<div class="panel-heading b-post-type b-post-type-text">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
написал <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/05/urn:ya.ru:post/22199227/1863/" >
5 сентября 2013 года, 01:52
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/ia.html">Я</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/zhizn.html">жизнь</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/eda.html">еда</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/mysl.html">мысль</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/09/05/urn:ya.ru:post/22199227/1863/"></a> </div>
<div class="row post-body">
<div class="b-text">
<p> Возможно ли совершить правильное разрезание арбуза такое, что все
косточки каждого куска окажутся на переферии одной стороны, позволяя их
удалить одним движением руки?</p>
</div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-link">
<div class="panel-heading b-post-type b-post-type-link">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
поделился ссылкой <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/04/tvorozhnye-zavitushki/" >
4 сентября 2013 года, 01:07
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/eda.html">еда</a></span></div>
</noindex>
<div class="post-title">
<a class="h-link" href="http://clubs.ya.ru/4611686018427389409/replies.xml?item_no=39990">
<img class="b-ico" src="http://favicon.yandex.ru/favicon/clubs.ya.ru?default=yaru-external">Творожные завитушки</a>
</div>
<div class="row post-body">
<div class="b-text">
<blockquote>
<p class="row photo-item"><a class="reference external" href="http://fotki.yandex.ru/users/sarachai/view/714095/"><img alt="Завитушки" src="http://img-fotki.yandex.ru/get/9356/99673415.39/0_ae56f_69ae5840_L" title="Завитушки"/></a></p>
<p>Понадобится:</p>
<ul class="simple">
<li>400 гр творога</li>
<li>4 ст.л. сахара</li>
<li>1 стакан муки (можно чуть больше )</li>
<li>3/4 ч.л. соды</li>
<li>4 желтка</li>
</ul>
<p>Творог растереть с желтками добавить соду (творог сам погасит её ) и оставить
на 5 минут. Добавить муку и сахар, замесить тесто. Убрать его в холодильник 1.5 часа.
Раскатать, свернуть в рулет, нарезать кружочками толщиной в 1 см. Выпекать при температуре
200 градусов 15-20 минут.</p>
</blockquote>
<p>Выглядит аппетитно</p> </div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-video">
<div class="panel-heading b-post-type b-post-type-video">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
вывесил видео <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/03/khochukhochuochen-khochu-sebe-takoi-gorizontalnyi-kliuch/" >
3 сентября 2013 года, 01:38
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/kliuch.html">ключ</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/radiosport.html">радиоспорт</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/morze.html">морзе</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/peredacha.html">передача</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/skorostnaia.html">скоростная</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/telegrafiia.html">телеграфия</a></span></div>
</noindex>
<div class="post-title">
Хочу..хочу..очень хочу себе такой горизонтальный ключ! </div>
<div class="row post-body">
<div class="b-text">
<div class="youtube" align="left"><iframe width="450" height="370" src="https://www.youtube.com/embed/WClo1G962po" frameborder="0"></iframe></div><p>Ностальгия, сильная ностальгия. У меня был простой советский ключ,
накатывает слеза, а этот ключ такой мимимими…!</p>
</div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div><div class="panel panel-photo">
<div class="panel-heading b-post-type b-post-type-photo">
<b class="b-user">
<a class="b-user__link" href="http://imdagger.github.io/author/imdagger.html"><b class="b-user__first-letter">I</b>MDagger</a>
</b>
вывесил фотки <span class="pull-right b-date">
<a class="h-link" href="http://imdagger.github.io/posts/2013/09/02/pauki-vozvrashchaiutsia/" title="изменено 2 сентября 2013 года в 17:02">
2 сентября 2013 года, 17:02
</a>
</span>
</div>
<div class="panel-body">
<div class="col-sm-1 b-post__layout-left">
<a href="http://imdagger.github.io/author/imdagger.html"><img src="http://upics.yandex.ru/22199227/middle"></a>
</div>
<div class="col-sm-11 b-right-col">
<noindex>
<div class="row tags-row">
<span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/arakhnidy.html">арахниды</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/priroda.html">природа</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/krestovik.html">крестовик</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/pauk.html">паук</a></span>, <span class="tag"><a rel="nofollow" class="h-link" href="http://imdagger.github.io/tag/derevnia.html">деревня</a></span></div>
</noindex>
<div class="post-title">
<a class="no-link" href="http://imdagger.github.io/posts/2013/09/02/pauki-vozvrashchaiutsia/">Пауки возвращаются</a> </div>
<div class="row post-body">
<div class="b-text">
<p class="row photo-item"><a class="reference external" href="http://fotki.yandex.ru/users/imdagger/view/597606"><img alt="Пауки возвращаются" src="http://img-fotki.yandex.ru/get/6715/22199227.b/0_91e66_f605a3c5_L" title="Пауки возвращаются"/></a></p>
<p class="row photo-item"><a class="reference external" href="http://fotki.yandex.ru/users/imdagger/view/597607"><img alt="Пауки возвращаются" src="http://img-fotki.yandex.ru/get/6718/22199227.b/0_91e67_d49d7d64_L" title="Пауки возвращаются"/></a></p>
<p> В добавок к паукам-осам вернулись в деревне на наш участок старые
соседи пауки-крестовики.</p> </div>
</div>
<div class="row comments-row">
<span><a class="pseudo-link b-candy b-comment-shortcut"><i class="b-ico"></i>ответить</a></span>
</div>
</div>
</div>
</div> <div class="panel panel-default">
<div class="panel-body more">
<span class="less-prev"><a class="h-link" href="http://imdagger.github.io/index9.html">Назад</a></span>
<span class="more-next"><a class="h-link" href="http://imdagger.github.io/index11.html">Ещё записи</a></span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>