Q: Heroku app crashing (H10 error) with psiturk experiment I'm trying to spin up an experiment on a Heroku app with psiturk. 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. 
Here are some of the steps I have taken so far:

*

*The experiment runs locally, and I have confirmed that I can connect to my postgres database from the Heroku app.

*I have also confirmed the Heroku is dynamically binding the port, and not using the one set in config.txt.

*In the Heroku bash environment, I am able to start psiturk and turn on the server without the app crashing, but the app will crash when loading a debug of sandbox HIT link.

The Heroku app uses python and node buildpacks, and the Procfile points to a python script. 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.
Here is the Heroku log:
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)
[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.
Any advice on next steps?

A: I found the answer on the psiturk google group. Psiturk 2 needs the parameter ON_HEROKU to be set (I had set ON_CLOUD insteadt. Running
heroku config:set ON_HEROKU=1

fixed the issue.
Alternatively you could upgrade to psiturk 3

A: The newer version of SQLAlchemy removed the deprecated dialect name postgres. You have to use postgresql. Among your database parameters, you have:
database_url = postgres:<my_database_url>

To fix this, rename postgres:// in the URL to postgresql://.
Alternatively consider to add sslmode='require' to your database URL.
