【问题标题】:(Django) Running asynchronous server task continously in the background(Django) 在后台连续运行异步服务器任务
【发布时间】:2018-10-18 09:12:02
【问题描述】:

我想让一个类在我的服务器上运行,它包含一个连接的蓝牙套接字并不断检查传入的数据,然后可以通过解释。原则上,类结构如下所示:

翻译:

-> connect(初始化类并开始循环)

-> 循环(在后台连续运行)

-> 断开连接(停止循环)

这个类应该在某个时候启动,然后在后台连续运行,有时一个http请求可能需要来自类属性的数据,但它应该独立运行。

我不知道如何做到这一点,也不想获得关于如何做到这一点的描述,但想知道我应该从哪里开始,比如如何调用这种过程。

【问题讨论】:

    标签: python django asynchronous webserver channels


    【解决方案1】:

    Django 本身不支持任何后台进程 - 一切都是基于 request-response 循环的。

    我不知道你想要做的事情是否有一个专门的名字。但最肯定的是 - 这是可能的。但是不要用这个解决方案把自己束缚在 Django 上。

    我实现这一点的方法是运行一个单独的 Python 进程,该进程负责保持与设备的连接,并根据请求以某种方式返回所需的数据。

    您遇到的唯一困难是确定如何从 Django 与该进程进行通信。因为,就像我说的,django 是基于请求的,所以辅助应用程序可以向您的 Django 应用程序公开一些数据 - 它可以执行以下任何操作:

    • 公开一个非常简单的 HTTP Rest API
    • 公开一个只会在连接后立即返回数据的 UNIX 套接字
    • 不断地将数据转储到 Django 可以读取的某些文件/数据库/mmap/队列中

    【讨论】:

    • 是的,我想我会多读一点关于多处理、多线程等的内容,看看什么适合我的问题。目前,我正在整理一些多处理代码 sn-ps 并查看它是否有效,因为它不是一个公开的 Web 服务器,如果它有时完全崩溃,那也没什么大不了的。
    猜你喜欢
    • 2017-09-19
    • 2016-03-02
    • 1970-01-01
    • 2020-06-08
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    相关资源
    最近更新 更多