请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在django中运行socket server

老师,还有另外一个问题。
如果我想在django中运行TCP Server,该服务用来接收客户端相关信息,然后通过web http的轮询来返回给前端。那么,在哪里启动该服务比较好呢,是在manage.py中启动新进程来执行嘛?类似于下面这种:

if __name__ == '__main__':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mat_server.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    # 启动TCP Server
    start_tcp_server()
    execute_from_command_line(sys.argv)

正在回答 回答被采纳积分+3

1回答

bobby 2018-10-29 13:55:54

直接在这里启动也行, 我个人更建议你做成一个单独的服务,为什么一定要和django项目放到一起运行的,做成一个单独的服务单独运行不是更好么

0 回复 有任何疑惑可以回复我~
  • 提问者 慕运维4479473 #1
    其实我想过做成单独一个服务,单独启动以及控制生命周期。但是该服务和django后台通信就比较麻烦了,要不通过http post,要不还是要通过socket发送到django后台中。而写在一起后,可以通过跨进程通信,比如Queue实现消息队列就好。
    请问下你这边的实现思路呢,如果分开写,那数据传输怎么做,目的是最终展示到前端上。
    回复 有任何疑惑可以回复我~ 2018-10-29 14:18:14
  • bobby 回复 提问者 慕运维4479473 #2
    数据通信用redis,你这个属于进程间通信,进程间通信用redis非常常见,你也需要学会解决进程间通信的问题,也可以用celery,服务分离是很常用的解决方案,不要因为会引入新的知识点就不用,这样也能增加你的眼界
    回复 有任何疑惑可以回复我~ 2018-11-05 13:43:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信