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

时间:2016-12-27 12:01:26

标签: python flask redis webhooks pybossa

我正在使用Pybossa webhooks,并发现this插件可以实时分析Pybossa结果。我分叉了,但没有得到它的执行方式。

目前,我按如下方式执行:

python app.py test_project

其中test_project是我的project_short_name。但是,它正在将我恢复到此存储库的index.html页面。

2 个答案:

答案 0 :(得分:2)

我自己没有设置它,但除了你可以从primary Pybossa site分叉的自定义微服务外,你似乎还运行了webhooks project

  1. 安装并运行主Pybossa服务器并创建管理员帐户。
  2. 安装并运行webhooks fork
  3. 从主PyBossa服务器上的管理员account page抓取您的API密钥。
  4. 在webhooks中,克隆settings.py.tmpl并更新API密钥等信息。
  5. 运行微服务。
  6. 在Pybossa中,将项目配置为在设置中使用webhook URL。
  7. 在webhooks中,加载index.html页面。
  8. 您可以更改索引页面上的图表以显示您感兴趣的结果。但正如我所说,这正是我理解需要完成的工作。我自己没有这样做,因为我只是要修改演示者JS以使用API​​执行一些我希望依赖于提交的答案值的操作。祝你好运。

答案 1 :(得分:1)

我找到了!查看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中,所以我可以轻松地调用它。