V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pompeii
V2EX  ›  问与答

Python 如何在一个 web 应用导入的类中设置一个重复执行的进程?

  •  
  •   pompeii · 2018-03-20 18:47:31 +08:00 · 1027 次点击
    这是一个创建于 2229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前情况:

    1. 我在新浪 sae 上使用 web.py 部署了一个微信后台。

    2. 我自己写了一个类(非主函数类),主要是提供数据爬取功能,为了避免模拟登录后 cookie 失效,所以在初始化的时候启动了一个定时访问某个页面的 thread,同时 thread.setDaemon(True)。

    3. 现在我想把这个类导入到主函数(也是一个类)中使用,但是因为这个进程的原因,整个应用启动失败(不启动这个进程就能启动应用)。

    问题:

    1. 如何才能实现我想要的效果?即在该进程启动的情况下使用这个类。

    2. 能说说问题的原因?

    3. 忽略这个问题来看,实例化这个类应该在主函数内部还是外部?有何区别?

    链接:

    1. 这是我写的简略代码,应该能还原这个问题,其中 WeiXinInterface 代表主函数,Crawler 代表爬虫:https://github.com/TMGT/Problem/tree/master/webpy1803

    PS:

    1. 突然想到,是不是可以把这两个类直接合并?(虽然有点蠢)
    第 1 条附言  ·  2018-03-20 20:09:23 +08:00

    附:

    1. 应该是线程,上面全打成了进程(-_-||)
    2. 听说是因为sae的限制, 不能添加线程, 真是这样就难受了
    8 条回复    2018-03-20 20:20:21 +08:00
    pompeii
        1
    pompeii  
    OP
       2018-03-20 18:51:08 +08:00 via iPhone
    发现字可能有点多
    SuT2i
        2
    SuT2i  
       2018-03-20 18:59:29 +08:00
    跟楼主遇到了同样的问题 主程序是 socket client,需要调用不同的模块中的函数并传入 data,调用的函数还是循环体,每隔一段时间需要发送数据到服务端。现在想到的办法就是不同模块都开个线程,将 socket 对象和 data 一起放进线程,但是一直进不去线程。
    pompeii
        3
    pompeii  
    OP
       2018-03-20 19:31:33 +08:00 via iPhone
    没有 python 大佬指点一二嘛
    ycz0926
        4
    ycz0926  
       2018-03-20 19:55:16 +08:00
    lz 一会进程,一会线程的,描述清楚点吧
    pompeii
        5
    pompeii  
    OP
       2018-03-20 20:09:57 +08:00
    @ycz0926 多谢提醒
    ycz0926
        6
    ycz0926  
       2018-03-20 20:13:26 +08:00   ❤️ 1
    闲的蛋疼,下了你的代码跑了下,没看到什么问题,唯一的问题就是,主进程跑完了,创建的线程当然也 over 了
    ycz0926
        7
    ycz0926  
       2018-03-20 20:15:27 +08:00
    this_thread.start()
    this_thread.join()
    这样就可以了
    ycz0926
        8
    ycz0926  
       2018-03-20 20:20:21 +08:00
    主要是你设置了 this_thread.setDaemon(True)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2382 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.