Python Django和Matplotlib:信号仅在主线程中工作

Python Django和Matplotlib:信号仅在主线程中工作,python,django,matplotlib,Python,Django,Matplotlib,在Django项目的views.py中,在代码中的某个点,我想在服务器上显示一个图形图,以实时显示用户输入。因此,我在与views.py相同的文件夹中创建了另一个文件plotter.py,其中包含以下内容以显示简单的图形: 进口numpy 导入matplotlib.pyplot def plot(): N = 50 x = numpy.random.rand(N) y = numpy.random.rand(N) colors = numpy.random.ran

在Django项目的
views.py
中,在代码中的某个点,我想在服务器上显示一个图形图,以实时显示用户输入。因此,我在与
views.py
相同的文件夹中创建了另一个文件
plotter.py
,其中包含以下内容以显示简单的图形:

进口numpy 导入matplotlib.pyplot

def plot():
    N = 50
    x = numpy.random.rand(N)
    y = numpy.random.rand(N)
    colors = numpy.random.rand(N)
    area = numpy.pi * (15 * numpy.random.rand(N))**2
    matplotlib.pyplot.scatter(x, y, s=area, c=colors, alpha=0.5)
    matplotlib.pyplot.show()
然后,在
views.py
中,我导入绘图仪,然后在文件中的所需位置,我有
plotter.plot()
。但是,这会产生以下错误:

Request Method:     POST
Request URL:    http://localhost:8000/teacher/
Django Version:     1.7
Exception Type:     ValueError
Exception Value:    

signal only works in main thread

Exception Location:     C:\Anaconda\lib\site-packages\matplotlib\backends\backend_qt5.py in mainloop, line 150
Python Executable:  C:\Anaconda\python.exe
Python Version:     2.7.8

如何在不引起此类错误的情况下实现这一点?

按如下方式运行服务器

python manage.py runserver --nothreading --noreload

我不确定这是你想要的方式。最好有一个REST接口或进程间消息传递,并在自己的进程中绘制gui代码。这只会禁用开发服务器中的线程。