我目前正在开发基于Django框架的webapp。它需要的功能之一是能够与ROS通信。但是,ROS函数需要在主线程上运行,据我所知,django每次都会生成新的线程。因此,当我尝试调用ROS函数时,我会收到错误消息,说它不能正常工作,因为它不在主线程上。我尝试编写一个单独的python脚本并将其导入视图并从那里调用它,但我仍然得到相同的错误。有没有人知道Django中这个问题的解决方法?
答案 0 :(得分:2)
您应该能够在应用服务器(wsgi或gunicorn等)的配置中指定线程/工作线程数。例如,使用gunicorn时,您可以specify one thread。
或者,您可以将所有ROS调用放入像celery这样的东西,然后从django视图中将任务排到队列中。就像gunicorn一样,你可以在单进程模式下运行celery,这使得它就像是单线程一样。