Improve standalone RPC more reliable and fix nameko shell loading #711
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Allow me to introduce my self, i am leader developer of a start up company which recently got acquired in Singapore. The core micro services internal RPC system of the product we developed was built using this nameko framework. In the past 3 years i've put a few changes to the framework to fix a couple of reliability issue (most are network issue). The main changes are the Changes 1 mentioned below, which is to fix many weird network issues we were encountering on Production environment (RabbitMQ 3.6.x). Unfortunately there is no easy way to write a test-case for all these network issue so this PR may have to relied on the people review, comment and trust. Hope the owner of
nameko
framework can take a look in this PR and give some comment for all the changes implemented here.p/s: I'm also the active maintainer/owner of these libraries:
+django-nameko : RPC connection pool implementation to use in conjunction with Nameko standalone RPC Proxy in any multi-threaded based non-nameko services such as: Django View, Django-Restframework API, Flask, ..)
+nameko-django : A custom kombu serializer which does auto convert Django ORM/Queryset/DateTime/Date/Decimal using msgpack which can be configure to used in nameko services
Changes 1: Improve standalone RPC to be more reliable
Changes 2: Fix nameko shell to load correctly
Changes 3: Fix compatible issue with system was running older version of nameko (prior to 2.12)
auto_delete=True
option when init Exchange for events to fix compatible with system was running older version of nameko. Also this feature is not deprecated from AMQP 0-9-1 anymore (see: auto_delete flag for exchanges is deprecated since 2014 celery/py-amqp#286)