關於在django框架中celery運行beat報OSError: [WinError 87] 參數錯誤的史詩級大坑

OSError: [WinError 87] 參數錯誤。

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "d:\anaconda\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\anaconda\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Anaconda\Scripts\celery.exe\__main__.py", line 7, in <module>
  File "d:\anaconda\lib\site-packages\celery\__main__.py", line 30, in main
    main()
  File "d:\anaconda\lib\site-packages\celery\bin\celery.py", line 81, in main
    cmd.execute_from_commandline(argv)
  File "d:\anaconda\lib\site-packages\celery\bin\celery.py", line 770, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "d:\anaconda\lib\site-packages\celery\bin\base.py", line 311, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "d:\anaconda\lib\site-packages\celery\bin\celery.py", line 762, in handle_argv
    return self.execute(command, argv)
  File "d:\anaconda\lib\site-packages\celery\bin\celery.py", line 694, in execute
  File "d:\anaconda\lib\site-packages\celery\bin\base.py", line 315, in run_from_argv
    sys.argv if argv is None else argv, command)
  File "d:\anaconda\lib\site-packages\celery\bin\base.py", line 377, in handle_argv
    return self(*args, **options)
  File "d:\anaconda\lib\site-packages\celery\bin\base.py", line 274, in __call__
    ret = self.run(*args, **kwargs)
  File "d:\anaconda\lib\site-packages\celery\bin\beat.py", line 79, in run
    return beat().run()
  File "d:\anaconda\lib\site-packages\celery\apps\beat.py", line 83, in run
    self.start_scheduler()
  File "d:\anaconda\lib\site-packages\celery\apps\beat.py", line 95, in start_scheduler
    platforms.create_pidlock(self.pidfile)
  File "d:\anaconda\lib\site-packages\celery\platforms.py", line 255, in create_pidlock
    pidlock = _create_pidlock(pidfile)
  File "d:\anaconda\lib\site-packages\celery\platforms.py", line 262, in _create_pidlock
    if pidlock.is_locked() and not pidlock.remove_if_stale():
  File "d:\anaconda\lib\site-packages\celery\platforms.py", line 200, in remove_if_stale
    os.kill(pid, 0)
SystemError: <class 'OSError'> returned a result with an error set

運行beat的時候報這個錯誤,網上都說是版本問題,需要把版本從4.0+降爲3.0+,可我的已經是3.1.19了還是有這個錯誤

我去源碼裏看了一下,意思好像是殺掉之前的進程失敗導致的(os.kill(pid,****)這個代碼出錯了),我聯想到之前beat停止之後再運行會說當前已有beat再運行,需要刪除目錄裏的celerybeat.pid文件,我試了一下,把他刪掉了

 

竟然跑通了(他喵的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章