【问题标题】:tweepy.error.TweepError: Twitter error response: status code = 403 When using dockerfiletweepy.error.TweepError: Twitter 错误响应:状态码 = 403 使用 dockerfile 时
【发布时间】:2018-07-19 13:33:54
【问题描述】:

我正在尝试使用 Dockefile 运行 python tweepy 脚本。

这是我的 Dockerfile:

FROM python:3.6

RUN pip install tweepy

RUN pip install pymongo
RUN pip install asyncio

ADD tweepy_twitter_stream_v0.6.py /


CMD [ "python", "./tweepy_twitter_stream_v0.6.py" ]

tweepy_twitter_stream_v0.6.py 是我试图在 docker 映像上运行的 python 脚本。 该文件搜索主题标签并将推文插入 mongoDB:

# Send a request to Twitter's server and save the data on tweepy iterator using hashtag_name.
for tweet in tweepy.Cursor(api.search,q=hashtag_name,count=100,wait_on_rate_limit=True ,wait_on_rate_limit_notify= True).items():

        # Convert tweepy object into json format 
        tweet_as_json = tweet._json  
        # Insert tweet to mongoDB 
        tweets.insert_one(tweet_as_json)

当我在 Jupyter notebook 上运行它时,它工作得非常好 但是,当我尝试使用 dockerfile 运行它时,我收到以下错误消息:

    for tweet in tweepy.Cursor(api.search,q=hashtag_name,count=100,wait_on_rate_limit=True ,wait_on_rate_limit_notify= True).items():
  File "/usr/local/lib/python3.6/site-packages/tweepy/cursor.py", line 49, in __next__
    return self.next()
  File "/usr/local/lib/python3.6/site-packages/tweepy/cursor.py", line 197, in next
    self.current_page = self.page_iterator.next()
  File "/usr/local/lib/python3.6/site-packages/tweepy/cursor.py", line 108, in next
    data = self.method(max_id=self.max_id, parser=RawParser(), *self.args, **self.kargs)
  File "/usr/local/lib/python3.6/site-packages/tweepy/binder.py", line 250, in _call
    return method.execute()
  File "/usr/local/lib/python3.6/site-packages/tweepy/binder.py", line 234, in execute
    raise TweepError(error_msg, resp, api_code=api_error_code)
tweepy.error.TweepError: Twitter error response: status code = 403

这就是我使用 docker 的方式:

  • 构建 docker 文件
  • 运行docker镜像
  • -

两者都很顺利,我得到了图像名称。然后我在 Docker 工具箱命令行中运行了这个命令:

    docker run f384c515d331 

f384c515d331 是图像名称。我仍然收到相同的错误消息。

请帮忙,这真的很令人沮丧;(

【问题讨论】:

    标签: python docker dockerfile tweepy http-status-code-403


    【解决方案1】:

    HTTP 403 表示请求的禁止状态。

    HTTP 403 是 HTTP 服务器与客户端通信的标准 HTTP 状态代码,表示服务器理解请求,但由于与授权相关的某些原因不会满足它。

    您的 API 调用很可能缺乏适当的身份验证,尽管如果不查看完整代码就很难说。请查看Tweepy authentication guide.

    【讨论】:

    • 感谢您的回复,但我想这不是身份验证问题,因为我提到它在 jupyter notebook 上完美运行。
    • 检查您的数据计划是否包括对您尝试使用的端点的访问权限。您可能还需要将您的应用列入白名单(例如 Engagement API)或注册访问权限(例如 Twitter 开发人员实验室)。
    猜你喜欢
    • 1970-01-01
    • 2015-07-24
    • 2022-08-16
    • 1970-01-01
    • 2015-11-28
    • 2018-12-28
    • 2023-03-19
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多