Я прочитал документы, предполагающие, что многопроцессорная передача может вызвать непреднамеренные побочные эффекты в приложениях Django или в Windows, особенно тех, которые подключены к нескольким базам данных. В частности, я использую функцию, load_to_table , для создания нескольких файлов CSV из DataFrame, а затем загружать данные в таблицу PostgreSQL, используя многопроцесс. Эта функция глубоко интегрирована в мое приложение Django и не является автономным сценарием. < /P>
Я обеспокоен потенциальными долгосрочными последствиями, если этот код используется в производстве. Кроме того, если __name__ == '__main __': , похоже, не работает в глубоких файлах/функциях Django. Это связано с тем, что команды управления Django выполняются в другом контексте, где __name __ не установлен на «__main __» , что предотвращает выполнение этого блока, как и ожидалось. Более того, многопроцессорные рекомендации рекомендуют использовать if __name__ == '__main __': для безопасной инициализации многопроцессорных задач, поскольку он гарантирует, что код не случайно выполняется несколько раз, особенно на платформах, таких как Windows, где код на уровне модуля повторно распределен в детских процессах. class = "lang-py prettyprint-override">
import os
import glob
from multiprocessing import Pool, cpu_count
from functools import partial
from portal.db_postgresql.connection import Connection
def copy_to_table(file_name: str, table_name: str, columns: list):
# custom connection class
connection_obj = Connection(get_current_db_name(), 1, 1)
connection = connection_obj.connection()
cursor = connection.cursor()
with open(file_name, "r") as f:
cursor.copy_from(f, table_name, sep=",", columns=columns, null="")
connection.commit()
connection.close()
return file_name
# df_ops is a custom PySpark dataframe class
def load_to_table(df_ops: PySparkOperations, table_name: str) -> dict:
filepath = os.path.join("uploaded_files", table_name)
df_ops.df.repartition(10).write.mode("overwrite").format("csv").option("header", "false").save(filepath)
file_path_list = sorted(glob.glob(f"{filepath}/*.csv"))
with Pool(cpu_count()) as p:
p.map(partial(copy_to_table, table_name=table_name, columns=df_ops.df.columns), file_path_list)
return df_ops.count
Функция выше не работает с отладчиком VS -кода, скорее всего, из -за Debugpy , что мешает многопроцессор Django. Тем не менее, он работает с Runserver . Когда я запускаю приложение Django с отладчиком VS -кода, я сталкиваюсь с следующей ошибкой при выполнении функции. Кажется, он работает в петлях. < /P>
File "/usr/lib/python3.11/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
File "/home/rhythmflow/Desktop/Reconciliation/reconciliation-backend-v3/portal/operations/load_data/methods.py", line 225, in load_to_table
with Pool(cpu_count()) as p:
^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/multiprocessing/context.py", line 281, in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
File "/home/rhythmflow/Desktop/Reconciliation/reconciliation-backend-v3/portal/operations/load_data/load_data.py", line 71, in start
load_to_table(df_ops, self.source_tmp_details)
File "/usr/lib/python3.11/multiprocessing/context.py", line 119, in Pool
return Pool(processes, initializer, initargs, maxtasksperchild,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/rhythmflow/.vscode/extensions/ms-python.debugpy-2024.10.0-linux-x64/bundled/libs/debugpy/_vendored/pydevd/pydevd.py", line 838, in wait_for_ready_to_run
self._py_db_command_thread_event.wait(0.1)
File "/usr/lib/python3.11/threading.py", line 629, in wait
signaled = self._cond.wait(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/threading.py", line 331, in wait
gotit = waiter.acquire(True, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/rhythmflow/Desktop/Reconciliation/reconciliation-backend-v3/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 664, in
signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))
SystemExit: 0
[22/Aug/2024 15:04:30] "POST /start-process/ HTTP/1.1" 500 59
[22/Aug/2024 15:04:35,063] - Broken pipe from ('127.0.0.1', 51102)
Что может вызвать эту проблему, и как я могу решить ее при использовании отладчика VS -кода?
Я прочитал документы, предполагающие, что многопроцессорная передача может вызвать непреднамеренные побочные эффекты в приложениях Django или в Windows, особенно тех, которые подключены к нескольким базам данных. В частности, я использую функцию, load_to_table , для создания нескольких файлов CSV из DataFrame, а затем загружать данные в таблицу PostgreSQL, используя многопроцесс. Эта функция глубоко интегрирована в мое приложение Django и не является автономным сценарием. < /P> Я обеспокоен потенциальными долгосрочными последствиями, если этот код используется в производстве. Кроме того, если __name__ == '__main __': , похоже, не работает в глубоких файлах/функциях Django. Это связано с тем, что команды управления Django выполняются в другом контексте, где __name __ не установлен на «__main __» , что предотвращает выполнение этого блока, как и ожидалось. Более того, многопроцессорные рекомендации рекомендуют использовать if __name__ == '__main __': для безопасной инициализации многопроцессорных задач, поскольку он гарантирует, что код не случайно выполняется несколько раз, особенно на платформах, таких как Windows, где код на уровне модуля повторно распределен в детских процессах. class = "lang-py prettyprint-override">[code]import os import glob from multiprocessing import Pool, cpu_count from functools import partial from portal.db_postgresql.connection import Connection
# df_ops is a custom PySpark dataframe class def load_to_table(df_ops: PySparkOperations, table_name: str) -> dict: filepath = os.path.join("uploaded_files", table_name) df_ops.df.repartition(10).write.mode("overwrite").format("csv").option("header", "false").save(filepath) file_path_list = sorted(glob.glob(f"{filepath}/*.csv")) with Pool(cpu_count()) as p: p.map(partial(copy_to_table, table_name=table_name, columns=df_ops.df.columns), file_path_list) return df_ops.count [/code] Функция выше не работает с отладчиком VS -кода, скорее всего, из -за Debugpy , что мешает многопроцессор Django. Тем не менее, он работает с Runserver . Когда я запускаю приложение Django с отладчиком VS -кода, я сталкиваюсь с следующей ошибкой при выполнении функции. Кажется, он работает в петлях. < /P> [code]File "/usr/lib/python3.11/multiprocessing/process.py", line 121, in start self._popen = self._Popen(self) ^^^^^^^^^^^^^^^^^ File "/home/rhythmflow/Desktop/Reconciliation/reconciliation-backend-v3/portal/operations/load_data/methods.py", line 225, in load_to_table with Pool(cpu_count()) as p: ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/multiprocessing/context.py", line 281, in _Popen return Popen(process_obj) ^^^^^^^^^^^^^^^^^^ File "/home/rhythmflow/Desktop/Reconciliation/reconciliation-backend-v3/portal/operations/load_data/load_data.py", line 71, in start load_to_table(df_ops, self.source_tmp_details) File "/usr/lib/python3.11/multiprocessing/context.py", line 119, in Pool return Pool(processes, initializer, initargs, maxtasksperchild, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/rhythmflow/.vscode/extensions/ms-python.debugpy-2024.10.0-linux-x64/bundled/libs/debugpy/_vendored/pydevd/pydevd.py", line 838, in wait_for_ready_to_run self._py_db_command_thread_event.wait(0.1) File "/usr/lib/python3.11/threading.py", line 629, in wait signaled = self._cond.wait(timeout) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/threading.py", line 331, in wait gotit = waiter.acquire(True, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/rhythmflow/Desktop/Reconciliation/reconciliation-backend-v3/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 664, in signal.signal(signal.SIGTERM, lambda *args: sys.exit(0)) SystemExit: 0 [22/Aug/2024 15:04:30] "POST /start-process/ HTTP/1.1" 500 59 [22/Aug/2024 15:04:35,063] - Broken pipe from ('127.0.0.1', 51102) [/code] Что может вызвать эту проблему, и как я могу решить ее при использовании отладчика VS -кода?
Моя цель - провести сравнение между двумя разными состояниями класса Rubiks Cube, которое само по себе просто. Проблема возникает, когда вам нужно вычислить что -то по порядку 900 миллионов сравнений, чтобы пройти все из них. Для справки, мы...
Моя цель - провести сравнение между двумя разными состояниями класса Rubiks Cube, которое само по себе просто. Проблема возникает, когда вам нужно вычислить что -то по порядку 900 миллионов сравнений, чтобы пройти все из них. Для справки, мы...
Я использую многопроцесскую в своем коде, код работает нормально, выполняемый из CMD, VS кода и т. Д., Но когда я создаю EXE с Pyinstaller, код выполняется с начала несколько раз (я знаю, потому что сценарий должен печатать ASCII Искусство сообщения...
Я делаю запрос Fetch для дополнительного HTML -контента и рендерирую его на странице. /> Мое решение состоит в том, чтобы использовать history.state или sessionStorage для хранения дополнительного HTML -контента и рендеринг на навигации на...
В настоящее время я работаю над обновлением более старого проекта Django, и у меня есть как Special>, и A общий вопрос о обновлениях упаковки.
🔍 Специфический вопрос:
Я использую django-jalali date == 1.0.2 в одном из моих более старше проектов, и...