今天我用一个 otree 应用程序在 Heroku 上运行了我的第一个会话。
不幸的是,参与者得到了错误消息:
7 月 1 日 01:19:33 pgg-jmu app/web.1 websockets.exceptions.ConnectionClosedError:代码 = 1006(连接异常关闭 [内部]),没有原因 7 月 1 日 01:19:33 pgg-jmu app/web.1 own_time=14ms request_id=9c6e69f6-0d8e-47b0-b01b-1a6d940c9daaJul 01 01:19:33 pgg-jmu app/web.1 own_time=11ms request_id=0c69e4a3-b27f-475c-bad9-e63eda6657bd pgg Jul 01 01:193: -jmu heroku/路由器 at=错误代码=H12 desc="请求超时" 方法=GET
代码是罪魁祸首吗?(该实验旨在改善全球化世界中的合作)
migration_list = []
German_list = []
for p in waiting_players:
if p.participant.vars['origin'] == 'Nein':
migration_list.append(p)
if p.participant.vars['origin'] == ' Ja':
German_list.append(p)
group_list = Subsession.get_groups(self)[1:]
distribution_list = [0, 0, 0, 0]
if group_list:
for group in group_list:
German_counter = 0
migration_counter = 0
for player in group .get_players():
if player.participant.vars['origin'] == 'Nein':
migration_counter += 1
if player.participant.vars['origin'] == 'Ja':
German_counter += 1
if German_counter = = 0 和移民计数器 == 3:
分布列表[0] += 1
如果 German_counter == 1 和 migration_counter == 2:
distribution_list[1] += 1
如果 German_counter == 2 和 migration_counter == 1:
distribution_list[2] += 1
如果 German_counter == 3 和 migration_counter == 0:
distribution_list[3 ] += 1
匹配工作如下:
-
- 当有 15 人处于等待状态或第一个处于等待状态的人已经等待 13 分钟时,将创建第一组 3 人。(代码不包括在上面)(没有问题的工作)
- 在创建第一组后,其余玩家在等待循环中被分成 3 组。目的是实现群体组成的一定分布。(代码未包含在上面)
列表migrant_list、german_list、group_list 和distribution_list(见代码)用于此目的。
migrant_list 和 German_list 列表包含队列中在上一次调查中对有关其出身的问题回答“是”(德国)或“否”(移民)的玩家。
group_list 是包含子会话的所有组的列表,不包括第一组。
distribution_list 是包含会话的已匹配组的不同组星座的数量的列表。
有四种可能的星座:
o 3 名移民
o 2 名移民,1 名德国人
o 1 名移民,2 名德国人
o 3 名德国人
要创建 distribution_list,请遍历 group_list 中的每个组以及相应组中的每个玩家。这些是 group_by_arrival_time_method 的代码中唯一的循环,我认为这可能会导致负载增加。
-> 发生错误时,在第一组之后跳过几组。今天:请求超时后从 ID 2 到 ID 80。
- 对于所使用的功率来说,这个过程是否可能过于复杂?
我使用: Dyno (Web) Standard X1
我应该:将参与者人数减少到 12 人,同时增加测功机的功率吗?
- 实现数据库时我做错了什么吗?
我删除了免费数据库并实施了新的 Postgres Standard 0。否则,我没有采取任何进一步的措施。(仅在 Heroku 的资源页面上)
谢谢!
最佳安德烈