Comments (2)
Thanks @digimaun - I think this probably sums it up:
"in this case when no messages are being received"
In the case where no events are being received currently we just continuously work the connection in a loop without any kind of sleep. If messages are being received then this breaks up the workload - otherwise the Python process is just going 100% and will use up as much resources as that process is allowed (usually most of the core that it's running on).
https://github.com/Azure/azure-uamqp-python/blob/master/uamqp/async_ops/client_async.py#L932
I could put in here a tiny sleep - and though would likely be enough.. though it may impact performance a little. Something like:
while self.receiving and self._client._received_messages.empty():
await asyncio.sleep(0.001)
self.receiving = await self._client.do_work_async()
from azure-uamqp-python.
CPU use on idle receive (i.e. no message throughput) and slow receive (low message throughput) should now be at reasonable levels with release 1.0.3.
CPU will remain quite high with high message throughput, as we prioritize message throughput performance over CPU consumption. In this scenario I would recommend using an external tool to limit the resources available to the process if there's a scenario where it must be kept to a minimum.
For anyone who is not interested in message throughput performance and wishes to slow down the message receiver in order to reduce CPU and memory load, you can do so by lowering the receiver prefetch value and receiving in small batches for processing.
from azure-uamqp-python.
Related Issues (20)
- This repo is missing important files HOT 1
- Python 3.11 issues for uaqmp HOT 8
- 1.6.0 tag missing in git repository HOT 2
- Update Ubuntu VM to 20.04
- Disable pipeline in Github Actions
- six usage is redundant HOT 2
- Build arm64 wheels HOT 1
- LinkDetach Idle timeout after 10 minutes is printed as log warning HOT 1
- Amqp over websocket is not working and leeds to a connection error HOT 2
- Add PyPy support HOT 5
- uamqp 1.6.4 on PyPi, but not in a GitHub release HOT 2
- Version tags on Github are broken HOT 5
- Provide Python 3.12 wheels HOT 2
- Can't build on Mac OS error: command '/usr/bin/clang' failed with exit code 1 HOT 6
- Vulnerable to CVE-2024-21646? HOT 4
- Python Based AQMP Library & uAMQP Repo Status HOT 2
- Fails to build with Python 3.12
- Vulnerable to CVE-2024-25110? HOT 5
- [1.6.9] Failed building wheel for uamqp HOT 9
- Backport CVE-2024-29195 fix here as well?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from azure-uamqp-python.