1 | | I'm getting the same error, while using the `iterator()` method of a queryset: |
2 | | {{{ |
3 | | Traceback (most recent call last): |
4 | | File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 96, in inner |
5 | | return func(*args, **kwargs) |
6 | | psycopg2.OperationalError: cursor "_django_curs_140027036677888_1" does not exist |
7 | | The above exception was the direct cause of the following exception: |
8 | | Traceback (most recent call last): |
9 | | File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1512, in cursor_iter |
10 | | for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel): |
11 | | File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1512, in <lambda> |
12 | | for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel): |
13 | | File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 96, in inner |
14 | | return func(*args, **kwargs) |
15 | | File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 89, in __exit__ |
16 | | raise dj_exc_value.with_traceback(traceback) from exc_value |
17 | | File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 96, in inner |
18 | | return func(*args, **kwargs) |
19 | | django.db.utils.OperationalError: cursor "_django_curs_140027036677888_1" does not exist |
20 | | During handling of the above exception, another exception occurred: |
21 | | Traceback (most recent call last): |
22 | | File "/home/user/data_refinery_workers/processors/utils.py", line 369, in run_pipeline |
23 | | last_result = processor(last_result) |
24 | | File "/home/user/data_refinery_workers/processors/qn_reference.py", line 241, in _update_caches |
25 | | for experiment in unique_experiments.iterator(): |
26 | | File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 341, in _iterator |
27 | | yield from self._iterable_class(self, chunked_fetch=use_chunked_fetch, chunk_size=chunk_size) |
28 | | File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 72, in __iter__ |
29 | | for row in compiler.results_iter(results): |
30 | | File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1515, in cursor_iter |
31 | | cursor.close() |
32 | | psycopg2.OperationalError: cursor "_django_curs_140027036677888_1" does not exist |
33 | | }}} |
34 | | |
35 | | This is the line of code that is causing that error https://github.com/AlexsLemonade/refinebio/blob/dev/workers/data_refinery_workers/processors/qn_reference.py#L241 |
36 | | |
37 | | Any idea why my cursor is disappearing? I don't think I'm doing anything unusual in my code there. The queryset it's iterating over seems to be ~20k records. |
38 | | |
39 | | The only other thing I can think of that might be non-standard about my configuration is that I have a pg_bouncer instance set up to batch database connections. It seems to do a good job of pretending to be the postgres server itself, but maybe this is a place that it doesn't? |