小编cam*_*ack的帖子

CSV文件从缓冲区上传到S3

我正在尝试将Django模型中的内容作为csv文件上传。我不想将文件保存在本地,而是将其保留在缓冲区中并上传到s3。当前,此代码不会按原样错误,并且会正确上传文件,但是文件为空。

file_name='some_file.csv'
fields = [list_of_fields]
header = [header_fields]

buff =  io.StringIO()
writer = csv.writer(buff, dialect='excel', delimiter=',')
writer.writerow(header)
for value in some_queryset:
    row = []
    for field in fields:
        # filling in the row
    writer.writerow(row)

# Upload to s3
client = boto3.client('s3')
bucket = 'some_bucket_name'
date_time = datetime.datetime.now()
date = date_time.date()
time = date_time.time()
dt = '{year}_{month}_{day}__{hour}_{minute}_{second}'.format(
    day=date.day,
    hour=time.hour,
    minute=time.minute,
    month=date.month,
    second=time.second,
    year=date.year,
)
key = 'some_name_{0}.csv'.format(dt)

client.upload_fileobj(buff, bucket, key)
Run Code Online (Sandbox Code Playgroud)

如果我使用缓冲区的内容,那肯定是在写它:

content = buff.getvalue()
content.encode('utf-8')
print("content: {0}".format(content)) # prints the csv …
Run Code Online (Sandbox Code Playgroud)

django amazon-s3 python-3.x boto3

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

Outlook 无法识别 .ics 文件中的自定义 UID,创建新事件(和新 ID)

我想做的事情:
我需要发送客户.ics文件,这些文件将在客户下载并双击(并选择填充他们的 Outlook 日历)后立即填充他们的 Outlook 日历。

当我在本地测试时,如果我将 Outlook 设置为工作,下面的 iCalendar 代码可以正常工作offline- 为每个事件生成一个 UID once,我可以一次又一次地使用同一文件,并且将not生成一个新事件 - 因为 UID 被识别展望已经存在。(这样我就可以依靠UID来更新,也可以取消)

问题是,当我使用onlineOutlook 时,每次使用该文件填充日历时,都会生成一个随机 UID(长 112 个字符) - 即使对于相同的事件 - 因此会生成重复的事件every time!

.ics 文件的示例:

BEGIN:VCALENDAR

VERSION:2.0
METHOD:PUBLISH
PRODID:-//PYVOBJECT//NONSGML Version 1//EN

BEGIN:VEVENT
UID:12345
DTSTART:20190715T020222Z
DTEND:20190715T030222Z
DESCRIPTION:Some fake summary - first event
DTSTAMP:20190715T010222Z
SEQUENCE:0
SUMMARY:this is the first event summary
END:VEVENT

BEGIN:VEVENT
UID:67890
DTSTART:20190715T040222Z
DTEND:20190715T050222Z
DESCRIPTION:Some fake summary - second event
DTSTAMP:20190715T010222Z
SEQUENCE:0
SUMMARY:this is the …
Run Code Online (Sandbox Code Playgroud)

icalendar outlook uid rfc5545

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

Python模拟requests.post引发异常

使用Python 3.5,requests == 2.18.4,Flask == 0.12.2,urllib3 == 1.22

some_method我的主server.py文件中有一个方法,该方法应该POST使用一些数据来生成一些URL:

def some_method(url, data):
    ...
    error = None
    try:
        response = requests.post(url, json=data)
    except requests.exceptions.ConnectionError as e:
        ...
        app.logger.error(...)
        response = None
        error = str(e)
    return error, response
Run Code Online (Sandbox Code Playgroud)

服务器文件定义:app = Flask(__name__),并some_method从调用@app.route(... methods=['PATCH'])
如果此方法引发错误,则路由最终将返回500

从一个测试文件运行测试,import serverapp = server.app使用unittest和导入应用程序mock.patch

我能够测试整个应用程序的行为,并进行测试,该测试显示该方法返回错误并看到路由在正确的位置终止时,应用程序路由的行为符合预期:

class ServerTestCase(unittest.TestCase):
    ...
    @patch('server.some_method')
    def test_route_response_status_500_when_throws(self, mock_response):
        mock_response.return_value = 'some_error_string', None
        response = …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking python-requests

2
推荐指数
1
解决办法
4644
查看次数