使用 app.main() 时如何指定 Faust 参数

How to specify Faust arguments when using app.main()

目前,我 运行 几个工人使用具有以下语法的命令行:

faust -A <filepath>:app -D <data-log-path> worker -l info -p 6066

而且效果很好。但似乎 运行 .py 文件并在以下文件中指定日志级别、数据目录和端口会更好:

if __name__ == '__main__':
  app.main()

风格。我似乎无法弄清楚如何将上面列出的任何 arguments/options 添加到应用程序对象 (app = faust.App()) 或 app.main() 函数的定义中。 我只想补充一点,我不确定是否值得这样做,因为我计划 运行 来自 shell 脚本的所有工作人员。这只是一种确保所有工作人员都获得到 运行 的唯一端口的方法,但我想如果需要,我可以将其硬编码到 shell 脚本中。

最常见的实现方式是使用 sys.argvtabletest.py 示例中有一个这样的示例:

if __name__ == '__main__':
    import sys
    if len(sys.argv) < 2:
        sys.argv.extend(['worker', '-l', 'info'])
    app.main()

在继续之前,我建议查看 faust.cli.worker 中的 worker 命令行选项。

假设您想要在脚本中 hard-code 您的值,您需要做的是:

if __name__ == '__main__':
  import sys
  sys.argv = [__file__, 'worker', '-l', 'info', '-p', '6066', '-f', '<data-log-path>']
  app.main()

有了这个,您可以 运行 yourscript.py 而无需指定选项。