Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

偶尔会超时 #100

Closed
yihong0618 opened this issue Apr 9, 2021 · 7 comments
Closed

偶尔会超时 #100

yihong0618 opened this issue Apr 9, 2021 · 7 comments
Labels
bug Something isn't working

Comments

@yihong0618
Copy link
Contributor

yihong0618 commented Apr 9, 2021

作者你好,
感谢你的项目,我用你的 Actions 设置的 crontab 偶尔会超时一次,我是 1 小时 1 跑,超时频率不确定。但基本上每天会发生至少一次。
image

image

Actions 地址 https://github.com/yihong0618/blog/actions

@yi-Xu-0100
Copy link
Contributor

@yihong0618 似乎是 gitee api 不稳定造成的,不太建议同步设置这么频繁,设置为定时时间长点,然后同时设置push触发,和手动启动比较好。

@yihong0618
Copy link
Contributor Author

@yi-Xu-0100
谢谢。

@Yikun
Copy link
Owner

Yikun commented Apr 9, 2021

@yihong0618 感谢反馈。

是的,这个是因为gitee的api接口不稳定造成的,这个错误是在访问gitee的查询列表时超时导致的。

我们会在调用gitee api的时候,加一个类似git操作重试的重试机制,去解决这个问题。

当然@yi-Xu-0100 提到的减少同步次数也是一个缓解的方法。

@yihong0618
Copy link
Contributor Author

@Yikun

Cool, 明白了,再次感谢。

@Yikun Yikun added the bug Something isn't working label Apr 9, 2021
@yi-Xu-0100
Copy link
Contributor

yi-Xu-0100 commented Apr 13, 2021

@Yikun

最近我的每日同步任务也出现失败现象。https://github.com/yi-Xu-0100/hub-mirror/actions


HTTPSConnectionPool(host='gitee.com', port=443): Max retries exceeded with url: /api/v5/users/yiXu0100/repos?page=0&per_page=60 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out'))  

似乎这个请求会对每次的同步都请求一次,而如果进行的是多 repo 的同步,则更容易造成错误。是否应该是任务启动的第一步获取完整列表以备后面使用。

@Yikun
Copy link
Owner

Yikun commented Apr 13, 2021

是否应该是任务启动的第一步获取完整列表以备后面使用。

是的,目前的实现,是在创建的时候,对于每个仓库都会检查一下目的端是否存在(获取目的仓列表,然后check是否存在):

if not self.has_dst_repo(repo_name):

这个地方是可以优化一下,在最开始的时候,获取一个目的端的列表,然后在has_repo check的时候,只用检查这个列表即可。

@Yikun
Copy link
Owner

Yikun commented Jun 26, 2021

这个地方是可以优化一下,在最开始的时候,获取一个目的端的列表,然后在has_repo check的时候,只用检查这个列表即可。

@functools.lru_cache
def _get_all_repo_names(self, url, page=1):

这里有LRU cache了,所以不需要优化。(自己写的代码给忘记了- -

关闭

@Yikun Yikun closed this as completed Jun 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants