【问题标题】:Running threaded module with celery; daemonic processes are not allowed to have children用 celery 运行线程模块;守护进程不允许有子进程
【发布时间】:2019-02-16 21:28:02
【问题描述】:

我在我的烧瓶应用程序中实现了一个带有芹菜的队列。一切正常。 但是我需要使用this module called sublist3r,当我在芹菜任务中使用它时,我收到了这个错误:

[2019-02-16 21:32:52,658: INFO/ForkPoolWorker-6] Task tasks.task.addd[57793628-de25-4c89-a265-5fee69a8b2bf] succeeded in 0.0236732449848s: None
[2019-02-16 21:32:52,660: WARNING/ForkPoolWorker-6] Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/me/code/proj/tasks/task.py", line 15, in getd
    sub = sublist3r.main(url, 40, None, ports=None, silent=True,verbose=False, enable_bruteforce=False, engines=None)
  File "/home/me/code/proj/sublist3r/sublist3r.py", line 871, in main
    subdomains_queue = multiprocessing.Manager().list()
  File "/usr/lib/python2.7/multiprocessing/__init__.py", line 99, in Manager
    m.start()
  File "/usr/lib/python2.7/multiprocessing/managers.py", line 524, in start
    self._process.start()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 124, in start
    'daemonic processes are not allowed to have children'
**AssertionError: daemonic processes are not allowed to have children**

发生这种情况是因为我正在尝试使用一个使用线程的模块吗? 我怎样才能在队列中或异步地使用这个模块?

谢谢

【问题讨论】:

    标签: python python-2.7 asynchronous queue celery


    【解决方案1】:

    似乎sublist3r 使用多处理并尝试启动自己的进程。你不能在 celery 中真正做到这一点,因为在生产中,celery 已经在它自己的子进程中启动了一个工人,并且你可以从错误消息中看出,celery 不允许你启动 sublist3r 的多处理进程用途。如果你想使用它,最好的办法是自己重写 sublist3r 中的这些类,以派生自 celery.Task 而不是 multiprocessing.Process

    【讨论】:

      猜你喜欢
      • 2015-08-17
      • 2018-11-03
      • 1970-01-01
      • 2023-03-02
      • 2017-05-27
      • 2014-11-24
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多