neo4j/neo4j-python-driver

Provide more details in Async API Documentation warning

havardthom opened this issue · 1 comments

  • Driver version: 5.1.0

The python driver Async API Documentation warns against using the driver with python 3.8 (https://neo4j.com/docs/api/python-driver/5.1/async_api.html#async-api-documentation).

Warning: There are known issue with Python 3.8 and the async driver where it gradually slows down. 
Generally, it’s recommended to use the latest supported version of Python for best performance, stability, and security.

As a python 3.8 project that wants to use the async driver it is hard to know if we should upgrade or not. What are the concrete consequences? How much slower is it than v4? Should projects with python 3.8 definitely avoid the async driver? Are you working on fixing the problem? If you have the answer to any of these questions it should probably be added to the warning.

There really isn't much more context to this. I've been playing around with the async driver on different Python versions and was measuring the time it took to process queries. I've noticed that with Py38 the driver got slower and slower under constant high load. It didn't cap out but kept getting slower. So feel free to give it a try and see if that does or does not happen for you. I dug into it to see if I can figure out where the time got lost, but couldn't find anything. But since this behavior was exclusive to Py38 I figured it wasn't worth investing more time than I did (probably a day) digging into it as it's likely outside the driver.

My frank opinion is that async Python is not mature yet. I keep hitting bugs, weird behaviors, and hard to interpret errors while maturing the async driver as much as I can.

I'll close this issue as I don't see any actions I need to take (other than responding here, of course). But please feel free to keep commenting if you have more questions.