我让 Python Celery 作为守护进程运行,Celerybeat 在 Amazon Linux 机器上执行任务。当我运行我的测试任务时,它会顺利完成。
@app.task
def test():
print("Testing 123")
return 0
但是,当我尝试使用 Python 的subprocess
模块启动 Ruby 脚本时,它会轮询几次,然后以1
.
@app.task
def run_cli():
try:
process = subprocess.Popen([filepath, "run"], stdout=subprocess.PIPE)
while not process.poll():
data = process.stdout.readline()
if data:
sys.stdout.write("Polling: " + data.decode("utf-8"))
else:
sys.stdout.write("Polling: No Data.")
return process.wait()
except Exception as e:
print(e)
我已经确认 Ruby 脚本在 Python shell 中使用tasks.run_cli.apply()
. 那么为什么 Celery Daemon 不执行这些任务呢?
预警:我对 Python 和 Celery 还很陌生,而且我的 Linux 技能不完整,所以如果有明显的问题,我深表歉意。任何帮助深表感谢。