Методы достижения сетевой асинхронности на разных языках программирования

«Сетевая асинхронность» относится к концепции выполнения задач или операций в сетевой среде без ожидания ответа перед переходом к следующей задаче. Такой подход позволяет повысить эффективность и масштабируемость сетевых приложений. Ниже я предоставлю вам несколько методов и примеры кода, которые демонстрируют различные методы достижения сетевой асинхронности.

  1. Асинхронное программирование с обратными вызовами:

    import requests
    def callback(response):
       print(response.text)
    def make_request(url, callback):
       requests.get(url, callback=callback)
    make_request("https://example.com", callback)
  2. Асинхронное программирование с промисами (JavaScript):

    fetch("https://api.example.com")
       .then(response => response.json())
       .then(data => console.log(data))
       .catch(error => console.error(error));
  3. Асинхронное программирование с использованием Async/Await (Python):

    import aiohttp
    import asyncio
    async def make_request(url):
       async with aiohttp.ClientSession() as session:
           async with session.get(url) as response:
               return await response.text()
    async def main():
       response = await make_request("https://example.com")
       print(response)
    asyncio.run(main())
  4. Реактивное программирование с помощью RxJava (Java):

    import io.reactivex.Observable;
    import io.reactivex.Observer;
    import io.reactivex.disposables.Disposable;
    Observable.just("https://api.example.com")
       .flatMap(url -> Observable.fromCallable(() -> fetchData(url)))
       .subscribe(new Observer<String>() {
           @Override
           public void onSubscribe(Disposable d) {
           }
           @Override
           public void onNext(String data) {
               System.out.println(data);
           }
           @Override
           public void onError(Throwable e) {
               e.printStackTrace();
           }
           @Override
           public void onComplete() {
           }
       });
  5. Асинхронная сеть с использованием asyncio (Python):

    import asyncio
    import aiohttp
    async def fetch(session, url):
       async with session.get(url) as response:
           return await response.text()
    async def main():
       async with aiohttp.ClientSession() as session:
           response = await fetch(session, 'https://example.com')
           print(response)
    asyncio.run(main())