2013-05-16 35 views
5

Tôi đang sử dụng trình sửa lỗi ipdb để gỡ lỗi các ứng dụng web đa luồng cục bộ (Django, Plone). Thường thì ipdb dường như bị lẫn lộn vì autoreload xảy ra khi tôi đang trên nhắc nhở gỡ rối. Dấu vết ngăn xếp kết quả xuất hiệnipdb, nhiều chủ đề và các chương trình tự động tải lại gây ra Lập trìnhError

/Users/mikko/code/xxxx/venv/lib/python2.7/site-packages/IPython/core/history.pyc in writeout_cache(self, conn) 
     605   with self.db_input_cache_lock: 
     606    try: 
    --> 607     self._writeout_input_cache(conn) 
     608    except sqlite3.IntegrityError: 
     609     self.new_session(conn) 

    /Users/mikko/code/xxxx/venv/lib/python2.7/site-packages/IPython/core/history.pyc in _writeout_input_cache(self, conn) 
     589    for line in self.db_input_cache: 
     590     conn.execute("INSERT INTO history VALUES (?, ?, ?, ?)", 
    --> 591         (self.session_number,)+line) 
     592 
     593  def _writeout_output_cache(self, conn): 

    ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 4546363392 and this is thread id 140735211872640 

Sau này, chương trình không thể đóng (chủ đề treo) hoặc bản thân ipdb ngừng hoạt động.

Có cách nào để phân tích vấn đề này với ipdb và làm cho nó an toàn hơn nhiều luồng/tự động tải không?

EDIT: Làm rõ câu hỏi một chút, vì tôi tin rằng đây có thể là các vấn đề cơ bản về IPython. Có thể có một số loại workaround với làm cho IPython chỉ đơn giản là loại bỏ lịch sử về tải lại hoặc vô hiệu hoá có vấn đề IPython SQLite viết một số cách khác.

Trả lời

5

Bạn luôn có thể chạy Django trong chế độ đơn luồng

python manage.py runserver --nothreading