Pybossa webhooks 中的问题,如何执行它

Issue in Pybossa webhooks, how to execute it

我正在使用 Pybossa webhooks,发现 this 插件可以实时分析 Pybossa 结果。我分叉了它但不知道它是如何执行的。

目前我是这样执行的:

python app.py test_project

其中 test_project 是我的 project_short_name。但是,它将我还原到此存储库的 index.html 页面。

我还没有自己设置,但你 运行 primary Pybossa site in addition to a custom microservice you can fork from the webhooks project.

  1. 安装并运行 主 Pybossa 服务器并创建管理员帐户。
  2. 安装并运行 webhooks fork
  3. 从您的主 PyBossa 服务器上的管理员 account page 获取您的 API 密钥。
  4. 在 webhooks 中,克隆 settings.py.tmpl 并更新 API 键等信息。
  5. 运行 微服务。
  6. 在 Pybossa 中,将您的项目配置为在您的设置中使用 Webhook URL。
  7. 在 webhook 中,加载 index.html 页面。

您可以更改索引页上的图表以显示您感兴趣的结果。但就像我说的,这正是我所理解的需要做的。我自己还没有这样做,因为我只是要修改演示者 JS 以使用 API 来执行一些我希望根据提交的答案的值执行的操作。祝你好运。

找到了!查看 pybossa.model.event_listeners 你会发现 push_webhook 函数,它将 webhook 推入队列。它由同一文件中的 on_taskrun_submit, on_auditrun_submit 函数调用。

如果你真的想手动执行 webhook,查看 pybossa.jobs,你会发现 webhook 函数,它是 webhook 执行的地方。您可以像这样手动调用它:

def trigger_webhook(short_name, task_id=0, result_id=0):
    from pybossa.jobs import webhook
    from datetime import datetime
    from pybossa.core import project_repo

    with app.app_context():
        project = project_repo.get_by_shortname(short_name)

        payload = dict(event="task_completed",
                       project_short_name=project.short_name,
                       project_id=project.id,
                       task_id=task_id,
                       result_id=result_id,
                       fired_at=datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"))
        webhook(project.webhook, payload)

我把这个函数放在了cli.py里面,方便调用