<p>我发现这个问题在谷歌很高,所以如果你带着希望找到更多细节的希望来到这里,我最后要做的是:</p>
<p>首先,我在我的应用程序上准备了端点。我的应用程序使用<a href="http://flask.pocoo.org/" rel="nofollow">Flask</a>,因此代码如下所示:</p>
<pre><code>@app.route("/worker", methods=["GET", "POST"])
def worker():
#refresh the interface or whatever is necessary
if flask.request.method == 'POST':
return 'Worker endpoint reached'
elif flask.request.method == 'GET':
worker = IronWorker()
task = worker.queue(code_name="hello", payload={"WORKER_DB_URL": app.config['WORKER_DB_URL'],
"WORKER_CALLBACK_URL": app.config['WORKER_CALLBACK_URL']})
details = worker.task(task)
flask.flash("Work queued, response: ", details.status)
return flask.redirect('/')
</code></pre>
<p>注意,在我的例子中,GET只用于测试,我不希望我的用户访问这个端点并调用任务。但我可以想象这样做确实有用的情况,特别是如果您不使用任何类型的调度程序来执行任务。在</p>
<p>在端点准备好之后,我开始寻找从工作者那里访问该端点的方法。我发现了这个<a href="http://docs.python-requests.org/en/latest/" rel="nofollow">fantastic requests library</a>,并用在我的工人身上:</p>
^{pr2}$
<p>所以最后这里没有真正的魔力,唯一重要的是在任务完成时通知页面时在有效负载中发送回调url。或者,如果在应用程序中使用端点url,则可以将其放置在数据库中。顺便说一句,上面的截图还显示了如何连接到您的worker中的postgresql数据库并打印所有用户。在</p>
<p>最后需要注意的是如何格式化.worker文件,我的文件如下所示:</p>
<pre><code># set the runtime language. Python workers use "python"
runtime "python"
# exec is the file that will be executed:
exec "hello_worker.py"
# dependencies
pip "SQLAlchemy"
pip "requests"
</code></pre>
<p>这将安装最新版本的SQLAlchemy和requests,如果您的项目依赖于库的任何特定版本,则应改为执行以下操作:</p>
<pre><code>pip "SQLAlchemy", "0.9.1"
</code></pre>