小编aun*_*uny的帖子

使用strptime将带有offset的时间戳转换为datetime obj

我正在尝试使用strptime方法将格式为"2012-07-24T23:14:29-07:00"的时间戳转换为python中的datetime对象.问题在于结束时的时间偏移(-07:00).没有偏移我可以成功做到

time_str = "2012-07-24T23:14:29"

time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S')
Run Code Online (Sandbox Code Playgroud)

但随着我尝试的抵消

time_str = "2012-07-24T23:14:29-07:00"

time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S-%z').
Run Code Online (Sandbox Code Playgroud)

但是它给出了一个Value错误,说"z"是一个糟糕的指令.

任何解决方案的想法?

python datetime timestamp rfc3339

49
推荐指数
3
解决办法
3万
查看次数

GitHub API:获取组织所有成员的电子邮件地址

GitHub API提供了一种获取组织成员的方法.我是我的组织的管理员/所有者,我想获得所有用户的电子邮件地址.我尝试使用membersAPI但它没有返回电子邮件地址.

在我的管理员中使用curl auth-token:

GET /orgs/my-org/members
Run Code Online (Sandbox Code Playgroud)

我得到的响应看起来像这样(对于其中一个用户)

"login": "auny",
    "id": some-number,
    "avatar_url": "https://secure.gravatar.com/avatar/6579d09c459f1adad8a60463f47eadd3?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
    "gravatar_id": "6579d09c459f1adad8a60463f47eadd3",
    "url": "https://api.github.com/users/auny",
    "html_url": "https://github.com/auny",
    "followers_url": "https://api.github.com/users/auny/followers",
    "following_url": "https://api.github.com/users/auny/following{/other_user}",
    "gists_url": "https://api.github.com/users/auny/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/auny/starred{/owner} 
     {/repo}",
    "subscriptions_url": "https://api.github.com/users/auny/subscriptions",
    "organizations_url": "https://api.github.com/users/auny/orgs",
    "repos_url": "https://api.github.com/users/auny/repos",
    "events_url": "https://api.github.com/users/auny/events{/privacy}",
    "received_events_url": 
    "https://api.github.com/users/auny/received_events",
    "type": "User"
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这包含有关用户的大量信息,但不包含重要信息之一,即用户的电子邮件地址.作为admin我应该能够获得所有用户的电子邮件地址.

其他用户API仅返回我自己的电子邮件地址,即auth-token请求中使用的帐户的电子邮件地址.API用法:

GET /user/emails
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标?周围有路吗?

api github github-api

9
推荐指数
3
解决办法
6331
查看次数

2020年1月1日终止服务后,PIP将在python 2.7中工作吗

如前所述,Python 2.7将于2020年1月1日到期,

https://legacy.python.org/dev/peps/pep-0373/

https://pythonclock.org/

pip在那之后,current是否会继续为python 2.7工作?它已经显示了弃用python 2.7的消息。pip install abc==1.2.3在那之后我们可以运行 吗?

我们确实了解到停产后,将不再为2.7进行新的修复/支持,因此这里不再关注。

问题源于即使在EOL之后也希望继续在python 2.7上运行的愿望。

python pip python-2.7 python-3.x

6
推荐指数
2
解决办法
8565
查看次数

Python:使用PID文件进行守护进程

我正在尝试使用该daemon模块守护进程.代码看起来像这样

import sys
import time
import daemon
import lockfile 


def do_things():
    while True:
        print "hello"
        time.sleep(3)

def main()
    context = daemon.DaemonContext(stdout=sys.stdout, 
                                   pidfile=lockfile.FileLock('test.pid'))

    with context:
        do_things()
Run Code Online (Sandbox Code Playgroud)

现在,您将看到我正在创建一个锁定PID文件.现在我运行这个程序,运行正常.现在,为了测试PID /守护进程功能,我使用了另一个程序实例

python test.py
Run Code Online (Sandbox Code Playgroud)

现在这次它不应该运行,因为先前的实例已经在运行.事实证明第二个实例开始并进入一个循环(这个不是while我的测试函数中的循环).strace在第二个实例上运行会持续提供以下输出

 stat("/some-path-here/Talha@Fedora14-4e1a9720.21520", {st_mode=S_IFREG|0666,
 st_size=0, ...}) = 0
 select(0, NULL, NULL, NULL, {0, 100000}) = 0 (Timeout)

 link("/some-path-here/Talha@Fedora14-  4e1a9720.21520", 
 "/somepath/test.pid.lock") = -1 EEXIST (File exists)
Run Code Online (Sandbox Code Playgroud)

并且这个痕迹永远出现,直到该过程被强制杀死.锁文件功能确实检测到现有锁文件的存在,但问题是程序没有退出.此外,我希望显示pid文件已存在此错误.

如何才能做到这一点?

python daemon lockfile pid

5
推荐指数
1
解决办法
5879
查看次数

GitHub API:如何改善对活动事件的非常有效的轮询?

GitHub的API提供了活动事件的特征users,orgsrepos.API支持分页最多10页,总共300 页,每页events30 events页.使用ETAG标头实现速率限制.我正在尝试轮询此API以获取最新活动.然而,由于Github所提供的设计,该方案非常低效.可以说,我就请求page-1通过

https://api.github.com/users/me/events/orgs/my-org?page=1
Run Code Online (Sandbox Code Playgroud)

我将获得ETAG此页面的条目.现在我移动到下一个page-2并做

https://api.github.com/users/me/events/orgs/my-org?page=2
Run Code Online (Sandbox Code Playgroud)

并将获得ETAG第2页.同样,我可以从所有10个支持的页面中提取事件.

现在让我们说我的orgs Github帐户上执行了一些活动.让我们假设只发生了一个新事件.在这种情况下,当我使用它poll的API 将返回已更改的页面,其中包含新的.同样在其前面也将发送改变页.然而,这种变化是之前最后一次事件并且现在已经移至顶部的事件.所有页面都会发生这种"转移到下一个".没有办法找出发生的新事件的数量.唯一的解决方案是继续轮询以获取最新信息.然而,这种方法有一个严重的缺陷解释如下:page-1ETAGeventpollingpage-2ETAGpage-2page-1page-2page-1events

events我的poll轮次之间的新数量大于30(一页上的最大项目)时,情况会变得更糟.在这种情况下,最新的30个事件之前的事件将page-2直接滑到.如果我只是pollpage-1我身上会失去这些滑倒的事件page-2.我想到的唯一解决方案是保留整个事件的缓存,然后扫描所有页面.然而,这是一种非常有效且不可取的方式,并且杀死事件通知API的目的.

我希望有些github-dev可以回答这个问题

api github polling github-api

4
推荐指数
1
解决办法
815
查看次数

如何在python dicts上使用$ push/$ addToSet mongodb更新修饰符

Mongodb更新提供了$push附加到数组的修饰符.我的问题是我希望这发生在一个字典上,例如

如果我的记录最初看起来像这样:

{"collaborations":{'id1':{'role':'dev','scope':'dev'}}}
Run Code Online (Sandbox Code Playgroud)

我想在"协作"字段dict中添加另一个项目(下面的"id2"),看起来像这样:

{"collaborations":{'id1':{'role':'dev','scope':'dev'},'id2':{'role':'qa','scope':'qa'}}}
Run Code Online (Sandbox Code Playgroud)

我正在尝试$push:

my_record.update({match_criteria},{$push,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})
Run Code Online (Sandbox Code Playgroud)

还有$addToSet:

my_record.update({match_criteria},{$,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})
Run Code Online (Sandbox Code Playgroud)

使用这两个,mongodb抛出错误"无法应用$addToSet($push)修饰符到非数组".

如何为dict类型做到这一点?有任何想法吗?

python mongodb

3
推荐指数
1
解决办法
1705
查看次数