django-telethon icon indicating copy to clipboard operation
django-telethon copied to clipboard

Problems with two or more session

Open VasiliiKletkin opened this issue 3 months ago • 1 comments

django.db.utils.IntegrityError: duplicate key value violates unique constraint "django_telethon_updatestate_pkey"

backend-1 | Traceback (most recent call last): backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner backend-1 | response = get_response(request) backend-1 | ^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response backend-1 | response = wrapped_callback(request, *callback_args, **callback_kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/contrib/admin/options.py", line 688, in wrapper backend-1 | return self.admin_site.admin_view(view)(*args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/utils/decorators.py", line 134, in _wrapper_view backend-1 | response = view_func(request, *args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/views/decorators/cache.py", line 62, in _wrapper_view_func backend-1 | response = view_func(request, *args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/contrib/admin/sites.py", line 242, in inner backend-1 | return view(request, *args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/utils/decorators.py", line 46, in _wrapper backend-1 | return bound_method(*args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/utils/decorators.py", line 134, in _wrapper_view backend-1 | response = view_func(request, *args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/contrib/admin/options.py", line 1959, in changelist_view backend-1 | response = self.response_action( backend-1 | ^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/contrib/admin/options.py", line 1593, in response_action backend-1 | response = func(self, request, queryset) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/home/app/backend/telegram/admin.py", line 18, in check_obj backend-1 | check_user(obj.id) backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/celery/local.py", line 182, in call backend-1 | return self._get_current_object()(*a, **kw) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/celery/app/task.py", line 411, in call backend-1 | return self.run(*args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/home/app/backend/telegram/tasks.py", line 41, in check_user backend-1 | checking() backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/asgiref/sync.py", line 277, in call backend-1 | return call_result.result() backend-1 | ^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result backend-1 | return self.__get_result() backend-1 | ^^^^^^^^^^^^^^^^^^^ backend-1 | File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result backend-1 | raise self._exception backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/asgiref/sync.py", line 353, in main_wrap backend-1 | result = await self.awaitable(*args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/home/app/backend/telegram/tasks.py", line 37, in checking backend-1 | async with telegram_client: backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/telethon/client/auth.py", line 660, in aexit backend-1 | await self.disconnect() backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/telethon/client/telegrambaseclient.py", line 732, in _disconnect_coro backend-1 | self._save_states_and_entities() backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/telethon/client/telegrambaseclient.py", line 697, in _save_states_and_entities backend-1 | self.session.set_update_state(0, types.updates.State(**ss, unread_count=0)) backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django_telethon/sessions.py", line 105, in set_update_state backend-1 | self.client_session.updatestate_set.update_or_create( backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/fields/related_descriptors.py", line 825, in update_or_create backend-1 | return super(RelatedManager, self.db_manager(db)).update_or_create(**kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method backend-1 | return getattr(self.get_queryset(), name)(*args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/query.py", line 949, in update_or_create backend-1 | obj, created = self.select_for_update().get_or_create(defaults, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/query.py", line 923, in get_or_create backend-1 | return self.create(**params), True backend-1 | ^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/query.py", line 658, in create backend-1 | obj.save(force_insert=True, using=self.db) backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/base.py", line 814, in save backend-1 | self.save_base( backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/base.py", line 877, in save_base backend-1 | updated = self._save_table( backend-1 | ^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/base.py", line 1020, in _save_table backend-1 | results = self._do_insert( backend-1 | ^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/base.py", line 1061, in _do_insert backend-1 | return manager._insert( backend-1 | ^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method backend-1 | return getattr(self.get_queryset(), name)(*args, **kwargs) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/query.py", line 1805, in _insert backend-1 | return query.get_compiler(using=using).execute_sql(returning_fields) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql backend-1 | cursor.execute(sql, params) backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/backends/utils.py", line 102, in execute backend-1 | return super().execute(sql, params) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/backends/utils.py", line 67, in execute backend-1 | return self._execute_with_wrappers( backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers backend-1 | return executor(sql, params, many, context) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/backends/utils.py", line 84, in _execute backend-1 | with self.db.wrap_database_errors: backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/utils.py", line 91, in exit backend-1 | raise dj_exc_value.with_traceback(traceback) from exc_value backend-1 | File "/root/.cache/pypoetry/virtualenvs/backend-qadtrZ8a-py3.12/lib/python3.12/site-packages/django/db/backends/utils.py", line 89, in _execute backend-1 | return self.cursor.execute(sql, params) backend-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ backend-1 | django.db.utils.IntegrityError: duplicate key value violates unique constraint "django_telethon_updatestate_pkey" backend-1 | DETAIL: Key (id)=(0) already exists. backend-1 |

main problem with /telethon/client/telegrambaseclient.py", line 697, in _save_states_and_entities telethon use index 0,

VasiliiKletkin avatar Mar 19 '24 16:03 VasiliiKletkin

I also had this problem, I think this problem is caused by the way of saving the session, I changed the way of saving the session from database to file session to solve this problem.

GrandNative avatar Mar 23 '24 18:03 GrandNative