2016-02-21 1 views
2

Я запускаю приложение django, которое использует sqlite3 как бэкэнд. У меня есть функция, которая выполняет операцию записи db. Что-то вроде приведенного ниже.OperationalError: ошибка ввода-вывода диска при использовании процесса

def task_run(): 
    db_write() 

Это нормально работает в обычном случае. Я назвал ту же функцию в модуле Process и выброшен OperationalError: disk I/O error

p = Process(target=self.task_run, args=()) 
     p.start() 
     p.join() 

Error: 
Traceback (most recent call last): 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap 
    self.run() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 114, in run 
    self._target(*self._args, **self._kwargs) 
    File "...runner.py", line 277, in task_runner 
    getattr(main, "first_function")("some random") 
    File "...modules/test/main.py", line 13, in first_function 
    self.__event__('information',"Testing plugin profiles") 
    File "...rc_plugin.py", line 28, in __event__ 
    event = Event.objects.post_event(self.job_id, self.task_id, type, message) 

    File "...managers.py", line 39, in post_event 
    if len(dup_events)>0: 
    File "...lib/python2.7/site-packages/django/db/models/query.py", line 144, in __len__ 
    self._fetch_all() 
    File "...lib/python2.7/site-packages/django/db/models/query.py", line 965, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "...lib/python2.7/site-packages/django/db/models/query.py", line 238, in iterator 
    results = compiler.execute_sql() 
    File "...lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 840, in execute_sql 
    cursor.execute(sql, params) 
    File "...lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "...lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "...lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 

    File "...lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "...lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 318, in execute 
    return Database.Cursor.execute(self, query, params) 
OperationalError: disk I/O error 

Любая идея, почему это происходит? Как я могу назвать ту же функцию с помощью многопроцессорности?

ответ

0

Я также встречаю эту ошибку владения сегодня, возможно, вы можете использовать память, чтобы объединить ее. Как это показано ниже:

con = sqlite3.connect(":memory:") 
Смежные вопросы