Giter Site home page Giter Site logo

microservices-in-action's People

Contributors

morganjbruce avatar pap avatar pauloalvespereira avatar xwlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microservices-in-action's Issues

Chapter 12

Step 1/2 : FROM fluent/fluentd:v0.12-debian
---> 3bcd4366c0e6
Step 2/2 : RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri", "--version", "1.9.2"]
---> Running in ea0ede6e3a68
ERROR: Error installing fluent-plugin-elasticsearch:
faraday requires Ruby version >= 2.4.
Successfully installed multi_json-1.15.0
Successfully installed elasticsearch-api-1.0.18
Successfully installed multipart-post-2.1.1
Successfully installed ruby2_keywords-0.0.2
ERROR: Service 'fluentd' failed to build : The command 'gem install fluent-plugin-elasticsearch --no-rdoc --no-ri --version 1.9.2' returned a non-zero code: 1

Chapter 6 example does not behave as described in the book.

On docker-compose up and a curl -I http://{DOCKER_HOST}/holdings as suggested on page 141, the curl-call bails out with a AttributeError: module 'holdings.queries_cached' has no attribute 'Holdings'.

I would expect it to trace the 3 calls tried.

Chapter 6 cache Example not working

I'm testing the example of cache method, but the request is always executed
`
import requests
import logging
from cachetools import cached, TTLCache

class MarketDataClient(object):

logger = logging.getLogger(__name__)
cache = TTLCache(maxsize=10, ttl=5*60)
base_url = 'http://market-data:8000'

def _make_request(self, url):
    response = requests.get(
        f"{self.base_url}/{url}", headers={'content-type': 'application/json'})
    return response.json()

@cached(cache)
def all_prices(self):
    MarketDataClient.logger.warning("Making request to get all_prices")
    return self._make_request("prices")

def price(self, code):
    return self._make_request(f"prices/{code}")

`

Here is the output of the containers:

holdings_1 | Making request to get all_prices
market-data_1 | [2019-01-05 15:23:20 +0000] [10] [DEBUG] GET /prices
market-data_1 | [2019-01-05 15:23:20 +0000] [10] [DEBUG] Closing connection.
holdings_1 | [2019-01-05 15:23:20 +0000] [10] [DEBUG] Closing connection.
holdings_1 | [2019-01-05 15:23:21 +0000] [10] [DEBUG] HEAD /holdings
holdings_1 | Making request to get all_prices
market-data_1 | [2019-01-05 15:23:21 +0000] [10] [DEBUG] GET /prices
market-data_1 | [2019-01-05 15:23:21 +0000] [10] [DEBUG] Closing connection.
holdings_1 | [2019-01-05 15:23:21 +0000] [10] [DEBUG] Closing connection.
holdings_1 | [2019-01-05 15:23:22 +0000] [10] [DEBUG] HEAD /holdings
holdings_1 | Making request to get all_prices
market-data_1 | [2019-01-05 15:23:22 +0000] [10] [DEBUG] GET /prices
market-data_1 | [2019-01-05 15:23:22 +0000] [10] [DEBUG] Closing connection.
holdings_1 | [2019-01-05 15:23:22 +0000] [10] [DEBUG] Closing connection.

Holdings is getting the request all the times. Any clue?

Broken builds

MacOS Mojave (version 10.14.3)
Docker Desktop Community (version 2.0.3.0)

Just go for example to chapter 7/feature directory, and run docker-compose up --build

Errors of the form:

   |     self.subextensions.update(iter_extensions(bound))
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/nameko/extensions.py", line 358, in iter_extensions
simplebank-market       |     for item in iter_extensions(ext):
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/nameko/extensions.py", line 358, in iter_extensions
simplebank-market       |     for item in iter_extensions(ext):
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/nameko/extensions.py", line 357, in iter_extensions
simplebank-market       |     for _, ext in inspect.getmembers(extension, is_extension):
simplebank-market       |   File "/usr/local/lib/python3.6/inspect.py", line 342, in getmembers
simplebank-market       |     value = getattr(object, key)
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/kombu/utils/objects.py", line 44, in __get__
simplebank-market       |     value = obj.__dict__[self.__name__] = self.__get(obj)
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/kombu/mixins.py", line 247, in channel_errors
simplebank-market       |     return self.connection.channel_errors
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/nameko/messaging.py", line 361, in connection
simplebank-market       |     ssl=ssl
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/kombu/connection.py", line 189, in __init__
simplebank-market       |     url_params = parse_url(hostname)
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/kombu/utils/url.py", line 47, in parse_url
simplebank-market       |     scheme, host, port, user, password, path, query = _parse_url(url)
simplebank-market       |   File "/usr/local/lib/python3.6/site-packages/kombu/utils/url.py", line 81, in url_to_parts
simplebank-market       |     parts.port,
simplebank-market       |   File "/usr/local/lib/python3.6/urllib/parse.py", line 169, in port
simplebank-market       |     port = int(port, 10)
simplebank-market       | ValueError: invalid literal for int() with base 10: 'localhost}:${RABBIT_PORT:5672}'

Looks like it is failing to resolve the environment variables.
But there are lots of other nameko related errors/deprecation notices etc too.

Chapter 6 - `docker-compose up` fails

Trying to build the example using docker-compose up fails on macOS 13, citing an error for a class uri 'gevent' invalid or not found.

I'm not sure if this is an error with the example or with my system, but if anyone has any clue as to what I can fix to get this to work I would be very grateful for the help.

Stack trace of the build:

+] Building 166.3s (16/16) FINISHED
 => [market-data internal] load build definition from Dockerfile                                                                                                                                                                                          0.0s
 => => transferring dockerfile: 211B                                                                                                                                                                                                                      0.0s
 => [market-data internal] load .dockerignore                                                                                                                                                                                                             0.0s
 => => transferring context: 2B                                                                                                                                                                                                                           0.0s
 => [holdings internal] load metadata for docker.io/library/python:3.6                                                                                                                                                                                    2.6s
 => [market-data internal] load build context                                                                                                                                                                                                             0.0s
 => => transferring context: 1.58kB                                                                                                                                                                                                                       0.0s
 => CACHED [holdings 1/4] FROM docker.io/library/python:3.6@sha256:f8652afaf88c25f0d22354d547d892591067aa4026a7fa9a6819df9f300af6fc                                                                                                                      25.7s
 => => resolve docker.io/library/python:3.6@sha256:f8652afaf88c25f0d22354d547d892591067aa4026a7fa9a6819df9f300af6fc                                                                                                                                       0.0s
 => => sha256:ac9d381bd1e98fa8759f80ff42db63c8fce4ac9407b2e7c8e0f031ed9f96432b 5.14MB / 5.14MB                                                                                                                                                            1.1s
 => => sha256:6b38ac662248fefa063a111bf2ad90812583c7295a6b912e563c969795a0e4d8 2.22kB / 2.22kB                                                                                                                                                            0.0s
 => => sha256:8c1c1d9c1f7000f6d70c3c6f6e6e4af4b5be7093cf36664bc7782b47536b9ed9 9.29kB / 9.29kB                                                                                                                                                            0.0s
 => => sha256:94a23d3cb5be24659b25f17537307e7f568d665244f6a383c1c6e51e31080749 53.60MB / 53.60MB                                                                                                                                                         11.2s
 => => sha256:aa9c5b49b9db3dd2553e8ae6c2081b77274ec0a8b1f9903b0e5ac83900642098 10.66MB / 10.66MB                                                                                                                                                          3.6s
 => => sha256:f8652afaf88c25f0d22354d547d892591067aa4026a7fa9a6819df9f300af6fc 1.86kB / 1.86kB                                                                                                                                                            0.0s
 => => sha256:841dd868500b6685b6cda93c97ea76e817b427d7a10bf73e9d03356fac199ffd 54.67MB / 54.67MB                                                                                                                                                         14.0s
 => => sha256:d4bb9078a4a2954fb77553c7f66912068fb62ff7cf431160389ebd36fab5c7ad 189.42MB / 189.42MB                                                                                                                                                       20.3s
 => => extracting sha256:94a23d3cb5be24659b25f17537307e7f568d665244f6a383c1c6e51e31080749                                                                                                                                                                 1.9s
 => => sha256:9d807fc527df91778b94e6dc5530f98eadf6a309392e1b22ba7cf1cc0dbf9085 6.16MB / 6.16MB                                                                                                                                                           14.6s
 => => extracting sha256:ac9d381bd1e98fa8759f80ff42db63c8fce4ac9407b2e7c8e0f031ed9f96432b                                                                                                                                                                 0.2s
 => => extracting sha256:aa9c5b49b9db3dd2553e8ae6c2081b77274ec0a8b1f9903b0e5ac83900642098                                                                                                                                                                 0.1s
 => => extracting sha256:841dd868500b6685b6cda93c97ea76e817b427d7a10bf73e9d03356fac199ffd                                                                                                                                                                 1.9s
 => => sha256:89008f573ea7a79b0e5be8ad88ed49f54d72a83cbd246dab36b9ab8fbf935df0 13.83MB / 13.83MB                                                                                                                                                         17.2s
 => => sha256:fd06ee6262083cd07382e9861f06330a376cf1afb1301731a27716a33d0dbf31 233B / 233B                                                                                                                                                               14.8s
 => => sha256:0e849fd7dce59e67c42d4a18a09c4ffb540be56628ecac88aad62269e08c2e84 2.21MB / 2.21MB                                                                                                                                                           16.1s
 => => extracting sha256:d4bb9078a4a2954fb77553c7f66912068fb62ff7cf431160389ebd36fab5c7ad                                                                                                                                                                 4.4s
 => => extracting sha256:9d807fc527df91778b94e6dc5530f98eadf6a309392e1b22ba7cf1cc0dbf9085                                                                                                                                                                 0.2s
 => => extracting sha256:89008f573ea7a79b0e5be8ad88ed49f54d72a83cbd246dab36b9ab8fbf935df0                                                                                                                                                                 0.3s
 => => extracting sha256:fd06ee6262083cd07382e9861f06330a376cf1afb1301731a27716a33d0dbf31                                                                                                                                                                 0.0s
 => => extracting sha256:0e849fd7dce59e67c42d4a18a09c4ffb540be56628ecac88aad62269e08c2e84                                                                                                                                                                 0.2s
 => [market-data 2/4] ADD . /app                                                                                                                                                                                                                          0.6s
 => [market-data 3/4] WORKDIR /app                                                                                                                                                                                                                        0.0s
 => [market-data 4/4] RUN pip install -r requirements.txt                                                                                                                                                                                                65.6s
 => [market-data] exporting to image                                                                                                                                                                                                                      0.2s
 => => exporting layers                                                                                                                                                                                                                                   0.2s
 => => writing image sha256:375586c00184b260fe7a81a3f531fc6997d1692e8bd2f028fdf005d0a16b00b8                                                                                                                                                              0.0s
 => => naming to docker.io/library/chapter-6-market-data                                                                                                                                                                                                  0.0s
 => [holdings internal] load .dockerignore                                                                                                                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                                                                                                                           0.0s
 => [holdings internal] load build definition from Dockerfile                                                                                                                                                                                             0.0s
 => => transferring dockerfile: 211B                                                                                                                                                                                                                      0.0s
 => [holdings internal] load build context                                                                                                                                                                                                                0.0s
 => => transferring context: 3.94kB                                                                                                                                                                                                                       0.0s
 => [holdings 2/4] ADD . /app                                                                                                                                                                                                                             0.0s
 => [holdings 3/4] WORKDIR /app                                                                                                                                                                                                                           0.0s
 => [holdings 4/4] RUN pip install -r requirements.txt                                                                                                                                                                                                   71.0s
 => [holdings] exporting to image                                                                                                                                                                                                                         0.2s
 => => exporting layers                                                                                                                                                                                                                                   0.2s
 => => writing image sha256:7879e0144ebf68703be3e06c6bc6528d0f386404fc2478578f157abbeeb50659                                                                                                                                                              0.0s
 => => naming to docker.io/library/chapter-6-holdings                                                                                                                                                                                                     0.0s
[+] Running 3/2
 ✔ Network chapter-6_default          Created                                                                                                                                                                                                             0.0s
 ✔ Container chapter-6-market-data-1  Created                                                                                                                                                                                                             0.0s
 ✔ Container chapter-6-holdings-1     Created                                                                                                                                                                                                             0.0s
Attaching to chapter-6-holdings-1, chapter-6-market-data-1
chapter-6-market-data-1  |
chapter-6-market-data-1  | Error: class uri 'gevent' invalid or not found:
chapter-6-market-data-1  |
chapter-6-market-data-1  | [Traceback (most recent call last):
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/site-packages/gunicorn/util.py", line 99, in load_class
chapter-6-market-data-1  |     mod = importlib.import_module('.'.join(components))
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
chapter-6-market-data-1  |     return _bootstrap._gcd_import(name[level:], package, level)
chapter-6-market-data-1  |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
chapter-6-market-data-1  |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
chapter-6-market-data-1  |   File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
chapter-6-market-data-1  |   File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
chapter-6-market-data-1  |   File "<frozen importlib._bootstrap_external>", line 678, in exec_module
chapter-6-market-data-1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/ggevent.py", line 14, in <module>
chapter-6-market-data-1  |     import gevent
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/site-packages/gevent/__init__.py", line 87, in <module>
chapter-6-market-data-1  |     from gevent._hub_local import get_hub
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/site-packages/gevent/_hub_local.py", line 101, in <module>
chapter-6-market-data-1  |     import_c_accel(globals(), 'gevent.__hub_local')
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/site-packages/gevent/_util.py", line 105, in import_c_accel
chapter-6-market-data-1  |     mod = importlib.import_module(cname)
chapter-6-market-data-1  |   File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
chapter-6-market-data-1  |     return _bootstrap._gcd_import(name[level:], package, level)
chapter-6-market-data-1  |   File "src/gevent/__greenlet_primitives.pxd", line 12, in init gevent.__hub_local
chapter-6-market-data-1  | ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 128 from C header, got 40 from PyObject
chapter-6-market-data-1  | ]
chapter-6-market-data-1  |
chapter-6-market-data-1  |
chapter-6-market-data-1 exited with code 1
chapter-6-holdings-1     |
chapter-6-holdings-1     | Error: class uri 'gevent' invalid or not found:
chapter-6-holdings-1     |
chapter-6-holdings-1     | [Traceback (most recent call last):
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/site-packages/gunicorn/util.py", line 99, in load_class
chapter-6-holdings-1     |     mod = importlib.import_module('.'.join(components))
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
chapter-6-holdings-1     |     return _bootstrap._gcd_import(name[level:], package, level)
chapter-6-holdings-1     |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
chapter-6-holdings-1     |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
chapter-6-holdings-1     |   File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
chapter-6-holdings-1     |   File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
chapter-6-holdings-1     |   File "<frozen importlib._bootstrap_external>", line 678, in exec_module
chapter-6-holdings-1     |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/ggevent.py", line 14, in <module>
chapter-6-holdings-1     |     import gevent
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/site-packages/gevent/__init__.py", line 87, in <module>
chapter-6-holdings-1     |     from gevent._hub_local import get_hub
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/site-packages/gevent/_hub_local.py", line 101, in <module>
chapter-6-holdings-1     |     import_c_accel(globals(), 'gevent.__hub_local')
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/site-packages/gevent/_util.py", line 105, in import_c_accel
chapter-6-holdings-1     |     mod = importlib.import_module(cname)
chapter-6-holdings-1     |   File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
chapter-6-holdings-1     |     return _bootstrap._gcd_import(name[level:], package, level)
chapter-6-holdings-1     |   File "src/gevent/__greenlet_primitives.pxd", line 12, in init gevent.__hub_local
chapter-6-holdings-1     | ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 128 from C header, got 40 from PyObject
chapter-6-holdings-1     | ]
chapter-6-holdings-1     |
chapter-6-holdings-1     |
chapter-6-holdings-1 exited with code 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.