Comments (5)
I created this repository to reproduce the issue https://github.com/jlariza/channels_testing_bug using cookiecutter
To test:
- create a venv using python 3.11
- run
pip install -r requirements/local.txt
to install dependencies - create a postgres database called
channelstestingbug
- run migrations
- run
pytest channels_testing_bug/myapp
- You'll get the
django.db.utils.OperationalError: the connection is closed
error inchannels_testing_bug/myapp/tests.py:20
in create_instance call. - If you change it to create the model in the setUp call, the error will be raised by
channels_testing_bug/myapp/consumers.py:14:
when it tries to filter the database.
The consumer works; I already tested it in another project. However, the tests fail because they cannot handle the async connection to the database.
Any ideas of what I'm missing or doing incorrectly?
Thank you,
from channels.
I suspect this is about how pytest manages the connection between tests.
I'd try inclining the model creation in the test case, to see if that makes progress and then adjust out from there.
from channels.
@carltongibson no luck. If you try to run the model creation in the test case directly, it raises django.core.exceptions.SynchronousOnlyOperation
but if you use the database_sync_to_async
decorator, the OperationalError
is raised again.
I tried creating the model using acreate in the testcase but then the OperationalError
is raised in this line if MyModel.objects.filter(id=self.object_id).exists():
again.
from channels.
it raises django.core.exceptions.SynchronousOnlyOperation
Yes, you'd need to wrap it in sync_to_async().
The idea is to reduce the number of different context so you can identify when the DB connection is being closed.
from channels.
MyModel.objects.filter(id=self.object_id).exists()
This will be because of the transaction test case usage. From the other transaction the object isn't yet saved, I'd guess.
from channels.
Related Issues (20)
- Unable to collect code coverage when using `ChannelsLiveServerTestCase` HOT 14
- error in channel layer explanations HOT 2
- adding a check if group_name exists method for channel_layer HOT 1
- Small messages are getting concatenated HOT 2
- How can I change the schema in the database? HOT 1
- How to test send_json() contents when passing close=True HOT 2
- Handler declaration by decorator/annotation (in order to prevent potential method leaks) HOT 1
- django-q2 and django-channels together HOT 1
- Channel Layer's group_send() Not Working When Called From Django View HOT 3
- Add CORs middleware HOT 1
- Breakage in routing.py on django/main pre-5.1.
- Use Django async-native APIs where possible HOT 9
- Django Channels Memory Leak on every message or connection HOT 35
- WARNING daphne.server ASGIStaticFilesHandler WebRequest took too long to shut down and was killed HOT 4
- Use group_send() when group is empty HOT 1
- Session Data Corrupted HOT 1
- Error with send_json Function in AsyncJsonWebsocketConsumer HOT 6
- Getting TypeError: SSEConsumer() missing 2 required positional arguments: 'receive' and 'send'
- django.core.exceptions.SynchronousOnlyOperation
- Minor error in documentation HOT 1
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 channels.