[英]Heroku app crashing (H10 error) with psiturk experiment
I'm trying to spin up an experiment on a Heroku app with psiturk.我正在尝试使用 psiturk 对 Heroku 应用程序进行实验。 I have previously gotten this to work (~2019), but recently (since 2021) I have not been able to run psiturk on Heroku without the app crashing, even using exactly the same code.
我之前已经让它工作了(~2019 年),但最近(自 2021 年以来)我无法在 Heroku 上运行 psiturk 而不会导致应用程序崩溃,即使使用完全相同的代码也是如此。
Here are some of the steps I have taken so far:以下是我迄今为止采取的一些步骤:
The Heroku app uses python and node buildpacks, and the Procfile points to a python script. Heroku 应用程序使用 python 和节点构建包,Procfile 指向 python 脚本。 I am using psiturk 2.3.11 and python 3.8.8, and I have followed the steps in the psiturk documentation for setting config variables.
我正在使用 psiturk 2.3.11 和 python 3.8.8,并且我已按照 psiturk 文档中的步骤设置配置变量。
Here is the Heroku log:这是 Heroku 日志:
2021-03-29T16:44:16.409840+00:00 app[api]: Starting process with command `bash` by user danibassettlab@gmail.com
2021-03-29T16:44:39.951733+00:00 heroku[run.7975]: State changed from starting to up
2021-03-29T16:44:40.507250+00:00 heroku[run.7975]: Awaiting client
2021-03-29T16:44:40.583037+00:00 heroku[run.7975]: Starting process with command `bash`
2021-03-29T17:04:33.678083+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/pub/ad?assignmentId=debug98GDW3&hitId=debug6JU43S&workerId=debugG38KJ9&mode=debug" host=jeni-docker-test.herokuapp.com request_id=2bdae5da-5f59-475e-8ca6-9ea9a380d5c0 fwd="70.16.141.206" dyno= connect= service= status=503 bytes= protocol=http
2021-03-29T17:04:33.870529+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=jeni-docker-test.herokuapp.com request_id=828565a0-923b-4283-b9de-17b4cf890459 fwd="70.16.141.206" dyno= connect= service= status=503 bytes= protocol=http
And the config.txt I'm using (with account information removed)还有我正在使用的 config.txt(删除了帐户信息)
[HIT Configuration]
title = Key Sequence Learning Study
description = Psychology Study in which you will learn to quickly press keys to respond to squares on the screen.
lifetime = 96
us_only = true
approve_requirement = 95
ad_group = default_network
psiturk_keywords = network
organization_name = University of Pennsylvania
browser_exclude_rule = mobile, tablet
allow_repeats = false
server_timeout = 240
[Database Parameters]
database_url = postgres:<my_database_url>
table_name = participants_tmp
[Server Parameters]
host = 0.0.0.0
port = 22362
cutoff_time = 30
logfile = server.log
loglevel = 2
debug = false
login_username = examplename
login_pw = examplepassword
threads = 1
secret_key = 'this is my secret key which is hard to guess, i should change this'
[Task Parameters]
experiment_code_version = 'behavioral_pilot_v6_delay'
num_conds = 1
num_counters = 1
[Shell Parameters]
launch_in_sandbox_mode = true
bonus_message = "Bonus for Bassett Lab Experiment. Thanks for participating!"
use_psiturk_ad_server = false
ad_location = https://jeni-docker-test.herokuapp.com/pub
The crash happens before anything is logged to the psiturk server.log file in the experiment folder.崩溃发生在任何内容被记录到实验文件夹中的 psiturk server.log 文件之前。
Any advice on next steps?对下一步有什么建议吗?
The newer version of SQLAlchemy
removed the deprecated dialect name postgres
.较新版本的
SQLAlchemy
删除了已弃用的方言名称postgres
。 You have to use postgresql
.您必须使用
postgresql
。 Among your database parameters, you have:在您的数据库参数中,您有:
database_url = postgres:<my_database_url>
To fix this, rename postgres://
in the URL to postgresql://
.要解决此问题,请将 URL 中的
postgres://
重命名为postgresql://
。
Alternatively consider to add sslmode='require'
to your database URL.或者考虑将
sslmode='require'
添加到您的数据库 URL。
I found the answer on the psiturk google group .我在psiturk google group上找到了答案。 Psiturk 2 needs the parameter ON_HEROKU to be set (I had set ON_CLOUD insteadt. Running
Psiturk 2 需要设置参数 ON_HEROKU(我设置了 ON_CLOUD 代替。运行
heroku config:set ON_HEROKU=1
fixed the issue.解决了这个问题。
Alternatively you could upgrade to psiturk 3或者,您可以升级到 psiturk 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.