【问题标题】:Pusher API not working on production serverPusher API 在生产服务器上不起作用
【发布时间】:2020-05-20 11:15:40
【问题描述】:

我在我的网站上使用 python 烧瓶和推送器 API 进行实时消息传递。 开发烧瓶服务器中的一切都按预期工作,但是当我切换到 gunicorn 和 nginx 实时服务器时,问题就开始了。 当我触发推送事件时,我收到错误 500。 也许我必须在我的 nginx.conf 文件中配置一些东西?

/etc/nginx/sites-enabled/đir

server {
        listen 80;
        server_name 172.104.228.152;

        location /static {
                alias /home/marko/Đir/đir/static;
        }

        location / {
                proxy_pass http://localhost:8000;
                include /etc/nginx/proxy_params;
                proxy_redirect off;
        }
}.

这是错误信息:

[2020-02-03 17:00:25,938] ERROR in app: Exception on /objave [POST]
Traceback (most recent call last):
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/marko/Đir/đir/rute.py", line 30, in dekorator
    return f(*args, **kwargs)
  File "/home/marko/Đir/đir/rute.py", line 143, in objave
    pusher_client.trigger('objava-kanal', 'nova-objava', {'sport': objava.sport, 'mjesto': objava.mjesto, 'datum': datum, 'sat': sat, 'id': objava.id, 'broj': len(o>  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/pusher/pusher.py", line 118, in trigger
    channels, event_name, data, socket_id)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/pusher/http.py", line 31, in __call__
    return self.client.http.send_request(self.make_request(*args, **kwargs))
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/pusher/requests.py", line 44, in send_request
    **self.options)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout                                                                                                                                                    File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen                                                     chunked=chunked,
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/urllib3/connectionpool.py", line 376, in _make_request
    self._validate_conn(conn)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/urllib3/connectionpool.py", line 994, in _validate_conn
    conn.connect()
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/urllib3/connection.py", line 394, in connect
    ssl_context=context,
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/urllib3/util/ssl_.py", line 336, in ssl_wrap_socket
    context.load_verify_locations(ca_certs, ca_cert_dir)
  File "/home/marko/\udcc4\udc90ir/venv/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py", line 450, in load_verify_locations
    cafile = cafile.encode("utf-8")
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 12-13: surrogates not allowed

编辑: 'routes.py'

pusher_client = pusher.Pusher(
  app_id='930370',
  key='43251c740e8c7fdc4747',
  secret='6cc68633eec00ebf9b9d',
  cluster='eu',
  ssl=True
)

@app.route("/objave", methods=["GET", "POST"])
@potrebna_prijava
def objave():
    #obrazac za novi događaj
    obrazac = ObjavaObrazac()
    #obrazac za filter događaja
    _filter = Filter()

    if obrazac.validate_on_submit():
        datum = datetime.strptime(obrazac.datum.data, "%Y/%m/%d %H:%M")
        objava = Objava(sport=obrazac.sport.data.capitalize(), mjesto=obrazac.mjesto.data.capitalize(), datum=datum, opis=obrazac.opis.data, korisnik_id=session["korisnik_id"])
        db.session.add(objava)
        db.session.commit()
        datum = objava.datum.strftime("%a, %d.").capitalize()
        sat = objava.datum.strftime("%H:%M")
        #pusher trigger
        pusher_client.trigger('objava-kanal', 'nova-objava', {'sport': objava.sport, 'mjesto': objava.mjesto, 'datum': datum, 'sat': sat, 'id': objava.id, 'broj': len(objava.sudionici)})
        flash('Kreirano', 'dobro')
        return redirect(url_for('objave'))

    if _filter.validate_on_submit():
        return redirect(url_for('objave', mjesto_filter=_filter.f_mjesto.data, sport_filter=_filter.f_sport.data))
    objave = selektiraj()
    #slika korisnika
    avatar = Korisnik.query.get(session.get("korisnik_id")).avatar
    return render_template("objave.html", obrazac=obrazac, objave=objave, avatar=avatar, filter=_filter)

附: 翻译:objava = 帖子,objave = 帖子,obrazac = 表格

【问题讨论】:

  • huumm,你的错误是在烧瓶中,而不是在 nginx 中,使用重音(à,ó,í)或一些特殊字符(ç,ö)?女巫是调试服务器和发布服务器上的python版本(通常python 2在重音和特殊字符方面有一些问题)
  • 是的,我使用的是字符“đ”,应用程序和包文件夹名称称为 đir,但我不会在推送触发器中使用它(据我所知)。当我使用 flask run 运行时,一切正常,但不适用于 gunicorn 和 nginx。 Python 版本是 3(我相信是 3.7)
  • 您能分享/objave 路由的sn-p 吗?这是 Flask 的错误,而不是 Nginx 或 Gunicorn 的错误。此外,如果您可以共享您尝试发送到该端点的数据
  • 嘿,我在编辑中添加了它(objave的路线)。顺便提一句。 pusher 在其他路由中也不起作用,我只是没有收到错误,因为我在那里使用了 try:,除了:
  • pusher_client.trigger 是否接受 JSON 字符串或字典?

标签: python flask pusher


【解决方案1】:

我设法通过设置 pusher ssl = False 解决了这个问题。 这真是一个奇怪的解决方案,文档或错误日志中无处可悲。

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2014-06-15
    • 1970-01-01
    • 2021-07-09
    • 2019-05-13
    • 2016-12-20
    相关资源
    最近更新 更多