|
361 | 361 |
|
362 | 362 |
|
363 | 363 |
|
364 | | - <label class="md-nav__link md-nav__link--active" for="__toc"> |
365 | | - |
366 | | - |
367 | | - |
368 | | - <span class="md-ellipsis"> |
369 | | - Examples |
370 | | - |
371 | | - </span> |
372 | | - |
373 | | - |
374 | | - <span class="md-nav__icon md-icon"></span> |
375 | | - </label> |
376 | | - |
377 | 364 | <a href="./" class="md-nav__link md-nav__link--active"> |
378 | 365 |
|
379 | 366 |
|
|
386 | 373 |
|
387 | 374 | </a> |
388 | 375 |
|
389 | | - |
390 | | - |
391 | | -<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
392 | | - |
393 | | - |
394 | | - |
395 | | - |
396 | | - |
397 | | - |
398 | | - <label class="md-nav__title" for="__toc"> |
399 | | - <span class="md-nav__icon md-icon"></span> |
400 | | - Table of contents |
401 | | - </label> |
402 | | - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
403 | | - |
404 | | - <li class="md-nav__item"> |
405 | | - <a href="#aiohttp" class="md-nav__link"> |
406 | | - <span class="md-ellipsis"> |
407 | | - aiohttp |
408 | | - </span> |
409 | | - </a> |
410 | | - |
411 | | -</li> |
412 | | - |
413 | | - <li class="md-nav__item"> |
414 | | - <a href="#requests" class="md-nav__link"> |
415 | | - <span class="md-ellipsis"> |
416 | | - Requests |
417 | | - </span> |
418 | | - </a> |
419 | | - |
420 | | -</li> |
421 | | - |
422 | | - <li class="md-nav__item"> |
423 | | - <a href="#websockets" class="md-nav__link"> |
424 | | - <span class="md-ellipsis"> |
425 | | - Websockets |
426 | | - </span> |
427 | | - </a> |
428 | | - |
429 | | -</li> |
430 | | - |
431 | | - <li class="md-nav__item"> |
432 | | - <a href="#zeromq" class="md-nav__link"> |
433 | | - <span class="md-ellipsis"> |
434 | | - ZeroMQ |
435 | | - </span> |
436 | | - </a> |
437 | | - |
438 | | -</li> |
439 | | - |
440 | | - </ul> |
441 | | - |
442 | | -</nav> |
443 | | - |
444 | 376 | </li> |
445 | 377 |
|
446 | 378 |
|
|
465 | 397 |
|
466 | 398 |
|
467 | 399 |
|
468 | | - <label class="md-nav__title" for="__toc"> |
469 | | - <span class="md-nav__icon md-icon"></span> |
470 | | - Table of contents |
471 | | - </label> |
472 | | - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
473 | | - |
474 | | - <li class="md-nav__item"> |
475 | | - <a href="#aiohttp" class="md-nav__link"> |
476 | | - <span class="md-ellipsis"> |
477 | | - aiohttp |
478 | | - </span> |
479 | | - </a> |
480 | | - |
481 | | -</li> |
482 | | - |
483 | | - <li class="md-nav__item"> |
484 | | - <a href="#requests" class="md-nav__link"> |
485 | | - <span class="md-ellipsis"> |
486 | | - Requests |
487 | | - </span> |
488 | | - </a> |
489 | | - |
490 | | -</li> |
491 | | - |
492 | | - <li class="md-nav__item"> |
493 | | - <a href="#websockets" class="md-nav__link"> |
494 | | - <span class="md-ellipsis"> |
495 | | - Websockets |
496 | | - </span> |
497 | | - </a> |
498 | | - |
499 | | -</li> |
500 | | - |
501 | | - <li class="md-nav__item"> |
502 | | - <a href="#zeromq" class="md-nav__link"> |
503 | | - <span class="md-ellipsis"> |
504 | | - ZeroMQ |
505 | | - </span> |
506 | | - </a> |
507 | | - |
508 | | -</li> |
509 | | - |
510 | | - </ul> |
511 | | - |
512 | 400 | </nav> |
513 | 401 | </div> |
514 | 402 | </div> |
|
527 | 415 |
|
528 | 416 |
|
529 | 417 | <h1 id="examples">Examples</h1> |
530 | | -<h2 id="aiohttp">aiohttp</h2> |
531 | | -<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span> |
532 | | -<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> |
533 | | - |
534 | | -<span class="kn">from</span><span class="w"> </span><span class="nn">aiohttp</span><span class="w"> </span><span class="kn">import</span> <span class="n">ClientSession</span> |
535 | | - |
536 | | -<span class="kn">from</span><span class="w"> </span><span class="nn">jsonrpcclient</span><span class="w"> </span><span class="kn">import</span> <span class="n">Error</span><span class="p">,</span> <span class="n">Ok</span><span class="p">,</span> <span class="n">parse</span><span class="p">,</span> <span class="n">request</span> |
537 | | - |
538 | | - |
539 | | -<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> |
540 | | -<span class="w"> </span><span class="sd">"""Handle async request"""</span> |
541 | | - <span class="k">async</span> <span class="k">with</span> <span class="n">ClientSession</span><span class="p">()</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> |
542 | | - <span class="k">async</span> <span class="k">with</span> <span class="n">session</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> |
543 | | - <span class="s2">"http://localhost:5000"</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">request</span><span class="p">(</span><span class="s2">"ping"</span><span class="p">)</span> |
544 | | - <span class="p">)</span> <span class="k">as</span> <span class="n">response</span><span class="p">:</span> |
545 | | - <span class="n">parsed</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="k">await</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">())</span> |
546 | | - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parsed</span><span class="p">,</span> <span class="n">Ok</span><span class="p">):</span> |
547 | | - <span class="nb">print</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">result</span><span class="p">)</span> |
548 | | - <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parse</span><span class="p">,</span> <span class="n">Error</span><span class="p">):</span> |
549 | | - <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">message</span><span class="p">)</span> |
550 | | - |
551 | | - |
552 | | -<span class="n">asyncio</span><span class="o">.</span><span class="n">get_event_loop</span><span class="p">()</span><span class="o">.</span><span class="n">run_until_complete</span><span class="p">(</span><span class="n">main</span><span class="p">())</span> |
553 | | -</code></pre></div> |
554 | | -<p>See <a href="https://explodinglabs.github.io/jsonrpc/aiohttp">blog post</a>.</p> |
555 | | -<h2 id="requests">Requests</h2> |
556 | | -<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> |
557 | | - |
558 | | -<span class="kn">import</span><span class="w"> </span><span class="nn">requests</span> |
559 | | - |
560 | | -<span class="kn">from</span><span class="w"> </span><span class="nn">jsonrpcclient</span><span class="w"> </span><span class="kn">import</span> <span class="n">Error</span><span class="p">,</span> <span class="n">Ok</span><span class="p">,</span> <span class="n">parse</span><span class="p">,</span> <span class="n">request</span> |
561 | | - |
562 | | -<span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">"http://localhost:5000/"</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">request</span><span class="p">(</span><span class="s2">"ping"</span><span class="p">),</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span> |
563 | | -<span class="n">parsed</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">())</span> |
564 | | -<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parsed</span><span class="p">,</span> <span class="n">Ok</span><span class="p">):</span> |
565 | | - <span class="nb">print</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">result</span><span class="p">)</span> |
566 | | -<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parsed</span><span class="p">,</span> <span class="n">Error</span><span class="p">):</span> |
567 | | - <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">message</span><span class="p">)</span> |
568 | | -</code></pre></div> |
569 | | -<h2 id="websockets">Websockets</h2> |
570 | | -<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span> |
571 | | -<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> |
572 | | - |
573 | | -<span class="kn">from</span><span class="w"> </span><span class="nn">websockets.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">connect</span> |
574 | | - |
575 | | -<span class="kn">from</span><span class="w"> </span><span class="nn">jsonrpcclient</span><span class="w"> </span><span class="kn">import</span> <span class="n">Error</span><span class="p">,</span> <span class="n">Ok</span><span class="p">,</span> <span class="n">parse_json</span><span class="p">,</span> <span class="n">request_json</span> |
576 | | - |
577 | | - |
578 | | -<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> |
579 | | -<span class="w"> </span><span class="sd">"""Handle request"""</span> |
580 | | - <span class="k">async</span> <span class="k">with</span> <span class="n">connect</span><span class="p">(</span><span class="s2">"ws://localhost:5000"</span><span class="p">)</span> <span class="k">as</span> <span class="n">socket</span><span class="p">:</span> |
581 | | - <span class="k">await</span> <span class="n">socket</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">request_json</span><span class="p">(</span><span class="s2">"ping"</span><span class="p">))</span> |
582 | | - <span class="n">response</span> <span class="o">=</span> <span class="n">parse_json</span><span class="p">(</span><span class="k">await</span> <span class="n">socket</span><span class="o">.</span><span class="n">recv</span><span class="p">())</span> |
583 | | - |
584 | | - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">Ok</span><span class="p">):</span> |
585 | | - <span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">result</span><span class="p">)</span> |
586 | | - <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">Error</span><span class="p">):</span> |
587 | | - <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">message</span><span class="p">)</span> |
588 | | - |
589 | | - |
590 | | -<span class="n">asyncio</span><span class="o">.</span><span class="n">get_event_loop</span><span class="p">()</span><span class="o">.</span><span class="n">run_until_complete</span><span class="p">(</span><span class="n">main</span><span class="p">())</span> |
591 | | -</code></pre></div> |
592 | | -<p>See <a href="https://explodinglabs.github.io/jsonrpc/websockets">blog post</a>.</p> |
593 | | -<h2 id="zeromq">ZeroMQ</h2> |
594 | | -<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">logging</span> |
595 | | - |
596 | | -<span class="kn">import</span><span class="w"> </span><span class="nn">zmq</span> |
597 | | - |
598 | | -<span class="kn">from</span><span class="w"> </span><span class="nn">jsonrpcclient</span><span class="w"> </span><span class="kn">import</span> <span class="n">Ok</span><span class="p">,</span> <span class="n">parse_json</span><span class="p">,</span> <span class="n">request_json</span> |
599 | | - |
600 | | -<span class="n">socket</span> <span class="o">=</span> <span class="n">zmq</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span><span class="o">.</span><span class="n">socket</span><span class="p">(</span><span class="n">zmq</span><span class="o">.</span><span class="n">REQ</span><span class="p">)</span> |
601 | | -<span class="n">socket</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s2">"tcp://localhost:5000"</span><span class="p">)</span> |
602 | | -<span class="n">socket</span><span class="o">.</span><span class="n">send_string</span><span class="p">(</span><span class="n">request_json</span><span class="p">(</span><span class="s2">"ping"</span><span class="p">))</span> |
603 | | -<span class="n">response</span> <span class="o">=</span> <span class="n">parse_json</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">recv</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">())</span> |
604 | | -<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">Ok</span><span class="p">):</span> |
605 | | - <span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">result</span><span class="p">)</span> |
606 | | -<span class="k">else</span><span class="p">:</span> |
607 | | - <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">message</span><span class="p">)</span> |
608 | | -</code></pre></div> |
609 | | -<p>See <a href="https://explodinglabs.github.io/jsonrpc/zeromq">blog post</a>.</p> |
| 418 | +<p>Examples have moved to the <a href="https://github.com/explodinglabs/jsonrpcclient/wiki">Community Wiki</a>.</p> |
610 | 419 |
|
611 | 420 |
|
612 | 421 |
|
|
0 commit comments